【问题标题】:How to avoid NLTK's sentence tokenizer splitting on abbreviations?如何避免 NLTK 的句子标记器在缩写上分裂?
【发布时间】: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”!

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

【问题讨论】:

    标签: python nlp nltk tokenize


    【解决方案1】:

    我认为缩写列表中的 美国小写 适合您 试试这个,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 2019-08-07
      相关资源
      最近更新 更多