如何避免NLTK的句子标记词在缩写词上出现分裂?

发布于 2021-01-29 17:13:00

我当前正在使用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.']

它可以识别更常见的“美国”,但看不到“无花果”!

如何结合这两种方法?我想使用默认缩写选项以及添加自己的缩写。

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我认为缩写列表中的 美国小写字母 将对您有效。

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看