【发布时间】:2016-04-20 17:38:57
【问题描述】:
我目前正在使用 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.']
标记器无法检测到缩写“U.S.A.”,但它对“fig”有效。 现在,当我使用 NLTK 提供的默认标记器时:
import nltk
nltk.tokenize.sent_tokenize('Fig. 2 shows a U.S.A. map.')
这次我明白了:
['Fig.', '2 shows a U.S.A. map.']
它识别更常见的“U.S.A.”但看不到“fig”!
如何将这两种方法结合起来?我想使用默认的缩写选项以及添加我自己的缩写。
【问题讨论】: