NLTK避免缩略词导致分句错误

参考:How to avoid NLTK’s sentence tokenizer splitting on abbreviations?

NLTK自带的nltk.tokenize库可以实现英文分句,但是当句子中存在缩写词时分句会错误:

from nltk.tokenize import sent_tokenize
sens = sent_tokenize('Fig. 2 shows a U.S.A. map.Look!')
print(sens)

"""
输出:['Fig.', '2 shows a U.S.A. map.Look!']
"""

可以使用nltk.tokenize.punkt库自定义缩写词列表进行分句:

from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameters

punkt_param = PunktParameters()
abbreviation = ['fig', 'u.s.a']
punkt_param.abbrev_types = set(abbreviation)
tokenizer = PunktSentenceTokenizer(punkt_param)
sens = tokenizer.tokenize('Fig. 2 shows a U.S.A. map.Look!')
print(sens)

"""
输出:['Fig. 2 shows a U.S.A. map.Look!']
"""

注意:

  1. 自定义缩略词列表单词全部小写,结尾的句号要去掉
  2. 句子结束标点后面要加一个空格,否则分句失败
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值