我正在尝试标记以下句子类型:
"The item at issue is no. 3553."
到目前为止,我尝试过的每个令牌生成器都会返回以下内容(包括在我的语料库上训练的Punkt令牌生成器):
[["the", "item", "at", "issue", "is", "no."], ["3553."]]
对于以“ no”结尾的句子,在令牌生成器中添加“ no”缩写将是一个问题。
答案 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'
此后,您可以应用令牌生成器。