相关疑难解决方法(0)

用nltk改进人名的提取

我试图从文本中提取人名.

有没有人有他们推荐的方法?

这就是我尝试的(代码如下):我nltk用来查找标记为人的所有内容,然后生成该人的所有NNP部分的列表.我正在跳过那些只有一个NNP的人,这可以避免抓住一个单独的姓氏.

我得到了不错的结果但是想知道是否有更好的方法来解决这个问题.

码:

import nltk
from nameparser.parser import HumanName

def get_human_names(text):
    tokens = nltk.tokenize.word_tokenize(text)
    pos = nltk.pos_tag(tokens)
    sentt = nltk.ne_chunk(pos, binary = False)
    person_list = []
    person = []
    name = ""
    for subtree in sentt.subtrees(filter=lambda t: t.node == 'PERSON'):
        for leaf in subtree.leaves():
            person.append(leaf[0])
        if len(person) > 1: #avoid grabbing lone surnames
            for part in person:
                name += part + ' '
            if name[:-1] not in person_list:
                person_list.append(name[:-1])
            name = ''
        person = []

    return …
Run Code Online (Sandbox Code Playgroud)

python nlp nltk

37
推荐指数
5
解决办法
5万
查看次数

标签 统计

nlp ×1

nltk ×1

python ×1