如何避免NLTK的句子标记词在缩写词上出现分裂?
我当前正在使用NLTK进行语言处理,但是遇到了句子标记化的问题。
问题出在这里:假设我有一句话:“图2显示了一张美国地图。” 当我使用punkt标记生成器时,我的代码如下所示:
from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameters
punkt_param = PunktParameters()
abbreviation = ['U.S.A', 'fig']
punkt_param.abbrev_types = set(abbreviation)
tokenizer = PunktSentenceTokenizer(punkt_param)
tokenizer.tokenize('Fig. 2 shows a U.S.A. map.')
它返回以下内容:
['Fig. 2 shows a U.S.A.', 'map.']
分词器无法检测到缩写“ USA”,但可以在“ fig”上使用。现在,当我使用默认标记器时,NLTK提供了:
import nltk
nltk.tokenize.sent_tokenize('Fig. 2 shows a U.S.A. map.')
这次我得到:
['Fig.', '2 shows a U.S.A. map.']
它可以识别更常见的“美国”,但看不到“无花果”!
如何结合这两种方法?我想使用默认缩写选项以及添加自己的缩写。
-
我认为缩写列表中的 美国小写字母 将对您有效。
from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameters punkt_param = PunktParameters() abbreviation = ['u.s.a', 'fig'] punkt_param.abbrev_types = set(abbreviation) tokenizer = PunktSentenceTokenizer(punkt_param) tokenizer.tokenize('Fig. 2 shows a U.S.A. map.')
它返回给我:
['Fig. 2 shows a U.S.A. map.']