如何避免NLTK句子分词在缩写处断开?

17

我目前正在使用NLTK进行语言处理,但是我遇到了一个句子分词的问题。

问题如下: 假设我有一个句子:"Fig. 2 shows a U.S.A. map." 当我使用Punkt Tokenizer时,我的代码看起来是这样的:

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”!

我该如何将这两种方法结合起来?我想使用默认的缩写选择,同时添加自己的缩写。

1个回答

19

我认为在缩写列表中使用小写字母的 u.s.a 对你来说是可行的。你可以尝试一下这个方法:

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.']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接