阻止句子标记器对“ no”的句子进行拆分。缩写

时间:2020-01-27 21:01:18

标签: python nlp nltk gensim

我正在尝试标记以下句子类型:

"The item at issue is no. 3553."

到目前为止,我尝试过的每个令牌生成器都会返回以下内容(包括在我的语料库上训练的Punkt令牌生成器):

[["the", "item", "at", "issue", "is", "no."], ["3553."]]

对于以“ no”结尾的句子,在令牌生成器中添加“ no”缩写将是一个问题。

2 个答案:

答案 0 :(得分:1)

恐怕系统了解no.缩写和no.句子结尾之间区别的唯一方法是理解句子的完整上下文。这超出了基本标记器的范围,并且开始徘徊于机器学习(ML)或自然语言处理(NLP)中。

也就是说,前瞻性模式可能会看到no.后跟数字。

答案 1 :(得分:-1)

您可以先替换任何出现的“否”。没有”。这可以作为文本预处理的一部分。 下面的正则表达式将有所帮助:

>>> str='The item at issue is no 3553 and no 3554. This is also described in issue no.  7890 with details. No. 345 is the root cause'
>>> p=re.compile('([n|N]o)[.]\s*(\d+)')
>>> m=p.sub(r'\1 \2',str)
>>> m
'The item at issue is no 3553 and no 3554. This is also described in issue no 7890 with details. No 345 is the root cause'

此后,您可以应用令牌生成器。

相关问题