NLTK基础 | What? NLTK也能进行命名实体识别!

在上一篇<NLTK基础 | 一文轻松使用NLTK进行NLP任务(附视频)>中,简单介绍了NLTK的安装和使用。大家都知道命名实体识别作为NLP几大基础任务之一,在工业界应用也是非常广泛。那么NLTK包能不能进行命名实体识别呢?下面将详细介绍NLTK如何出色的完成命名实体识别任务!

命名实体识别作为自然语言处理的子任务之一,旨在通过算法能够自动的识别出一句话中的实体,比如人物、地点、物品、时间、数字等等。

NLTK包中内置命名实体识别算法,主要分为两种:(1) 识别句子中所有命名实体;(2) 将命名实体识别为它们各自的类型,例如人物,地点,位置等。

这里举一个例子:

import nltk
from nltk.corpus import state_union
from nltk.tokenize import PunktSentenceTokenizer


train_text = state_union.raw("2005-GWBush.txt")
sample_text = state_union.raw("2006-GWBush.txt")


custom_sent_tokenizer = PunktSentenceTokenizer(train_text)
tokenized = custom_sent_tokenizer.tokenize(sample_text)


def process_content(document):
    words = nltk.word_tokenize(document)
    tagged = nltk.pos_tag(words)
    namedEnt = nltk.ne_chunk(tagged, binary=True)
    return namedEnt


namedEnt = process_content(tokenized[6])

在这里,当binary=True,这意味着某物是命名实体,还是不是。没有进一步的细节。结果是:

如果将binary=False,则结果为:

随即,您可以看到一些内容。当binary=False时,它将采用相同的方法,但最终将像"White House"这样的术语拆分为"White"和"House",就好像它们是不同的一样,而我们可以在binary=True选项中看到命名实体识别中"White House"是同一个实体的一部分是正确的。

根据你的目标,可以按照自己的意愿使用binary选项。如果binary=False,则可以得到以下命名实体的类型(ps:这是binary=True所不具备的):

named_entities = []
for tagged_tree in namedEnt:
    if hasattr(tagged_tree, 'label'):
        entity_name = ' '.join(c[0] for c in tagged_tree.leaves()) 
        entity_type = tagged_tree.label() 
        named_entities.append((entity_name, entity_type))
        named_entities = list(set(named_entities))
        
entity_frame = pd.DataFrame(named_entities, columns=['Entity Name', 'Entity Type'])
print(entity_frame)
  
  输出结果为:
  Entity Name   Entity Type
0       House  ORGANIZATION
1       White      FACILITY
2        Eric        PERSON

无论哪种方式,你都可能会发现需要做更多的工作才能使其性能更好,但是,NLTK开箱即用,这是非常强大的,值得夸奖的!

以上就简单的介绍了NLTK在命名实体识别任务的用途!希望小伙伴们喜欢!

个人微信:加时请注明 (昵称+公司/学校+方向)

历史精品文章推荐

1、知否?知否?一文看懂深度文本分类之DPCNN原理与代码

2、CCL“中国法研杯”相似案例匹配评测竞赛 - TOP队伍攻略分享

3、推荐|机器学习入门方法和资料合集

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值