在英文语言中使用 SpaCy 进行人名检测。寻找答案

Hai*_*aza 2 python nlp nltk spacy ner

我正在使用 Spacy 并尝试检测文本中的名称。例如, text = 'Keras 是一个很好的包。亚当·斯密使用黑色汽车。我希望卡特里娜飓风在她的工作中做得很好。

答案应该是这样的:亚当斯密和卡特里娜飓风。

谁能推荐

Gol*_*ion 7

spacy 有一个名为 person 的 label_。您有多种型号可供选择:小型、中型或大型。Large 使用更多资源来运行

def find_persons(text):
    # Create Doc object
    doc2 = nlp(text)

    # Identify the persons
    persons = [ent.text for ent in doc2.ents if ent.label_ == 'PERSON']

    # Return persons
    return persons
Run Code Online (Sandbox Code Playgroud)

尝试 nltk 查找名词,然后对有效名称的名词进行模式匹配:

tokenized_sent = nltk.word_tokenize(sentence)
tagged_sent = nltk.pos_tag(tokenized_sent)
Run Code Online (Sandbox Code Playgroud)
nouns
pronouns
adjectives
verbs

NNP - proper noun singular
PRP - proper noun
VB - verb
DT - determinant

NNP - proper noun singular
PRP - proper noun
VB - verb
DT - determinant
Run Code Online (Sandbox Code Playgroud)


0x5*_*050 5

这是一个典型的命名实体识别问题。Spacy 有一个预先训练的模型来实现这一点,它应该能够准确地检测人名。

看看这个代码示例。

根据 Spacy 的注释方案,名称被标记为PERSON.