gpt4 book ai didi

Python:正则表达式分句

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:30 26 4
gpt4 key购买 nike

有一个简单的分词器,它适用于我需要显示它的测试文件,代码如下:

import re, sys
for line in sys.stdin:
for token in re.findall("(\w+\.\w+\.[\w.]*|\w+[-.]\w+|[-]+|'s|[,;:.!?\"%']|\w+)", line.strip()):
print(token)

这样的文字这所房子很小。那房子很大。正确地变成:

This
house
is
small
.
That
house
is
big
.

但是,我还需要在句子之间插入一个空行:

···
small
.

That
···

所以我又写了一个循环

for token in re.sub("([\"\.!?])\s([\"`]+|[A-Z]+\w*)", "\\1\n\n\\2", line):

使用 regexp 捕获我需要使用的测试文本中几乎所有的断句,但我在实际将它连接到代码时遇到了问题。将它放在第一个 for 循环 中,这对我来说是最合乎逻辑的,但会完全破坏输出。还尝试了一些 if 子句,但这也不起作用。

最佳答案

使用 sent_tokenize() 组合的非正则表达式解决方案和 word_tokenize()来自 nltk:

from nltk.tokenize import word_tokenize, sent_tokenize

s = "This house is small. That house is big."

for t in sent_tokenize(s):
for word in word_tokenize(t):
print(word)
print

打印:

This
house
is
small
.

That
house
is
big
.

关于Python:正则表达式分句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33704443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com