尝试使用word_tokenize和send_tokenize用新行对段落进行标记,但是无法识别新行。

尝试通过将其拆分为新行来将其分成几段,但仍然无法正常工作。

from nltk import sent_tokenize, word_tokenize, pos_tag
para="the new line \n new char"
sent=sent_tokenize(para)
print(sent)


输出:

['the new line \n new char']


如果在python中以字符串格式指定数据,则可以正常工作,但是当我从docx文件中提取数据时失败

对于Python中的数据,我正在使用

from nltk import sent_tokenize, word_tokenize, pos_tag
para="the new line \n new char"
paragraphs = [p for p in para.split('\n') if p]
par3=[sent_tokenize(par) for par in paragraphs]
print(par3)


输出:

[['the new line'], [' new char']]


PS:我正在使用UTF-8编码从doc文件中读取数据。

最佳答案

在NLTK中,sent_tokenize是一种统计算法。它是Kiss and Strunk (2006)中Punkt算法的实现

word_tokenize是从原始Treebank word tokenizer from the Penn TreeBank project扩展而来的基于规则的算法(正则表达式搜索和替换)

要使用\n符号分隔字符串,只需执行str.split('\n'),例如

>>> s = 'abc\ndef'
>>> print(s)
abc
def
>>> s.split('\n')
['abc', 'def']

关于python - 如何使用line_tokenize分隔新行或使用nltk分隔word_tokenize?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48611576/

10-09 20:16
查看更多