首页 > 解决方案 > 使用 pandas 数据框将自定义标签分配给 spacy

问题描述

我是基于 NLP 的编程的新手。我正在尝试使用 NLP 将单词与现有数据集进行比较。

我有一个如下所示的数据框

数据框

现在,我有一个像“krish Stockholm”这样的输入文本,程序应该将每个单词标记到训练数据集的列标签并显示如下

克里希:名字

斯德哥尔摩 : 城市

可以使用 spacy 完成吗?感谢指导。

标签: nlpspacy

解决方案


您可以使用spacy识别人名和位置,您的输入字符串可能总是不返回实体,例如,如果字符串只有'krish Stockholm'文本,它可能会将其识别为仅名称,因此输入文本的质量至关重要。

您可以像这样将值更新到现有数据框:

import spacy
nlp = spacy.load('en_core_web_sm') 
sentence = "Tom works in Apple office at California"
doc = nlp(sentence) 

mylist= []
for ent in doc.ents: 
    print(ent.text, ent.label_)
    mylist.append([ent.text,ent.label_])

print(mylist)

[['Tom', 'PERSON'], ['Apple', 'ORG'], ['California', 'GPE']]

person = ', '.join([i[0] for i in mylist if i[1] == 'PERSON'])
location = ', '.join([i[0] for i in mylist if i[1] == 'GPE'])

df = df.append({'Name':person,'City':location}, ignore_index=True)
print(df)

    Name   Age        City
0    Tom  20.0  California
1   nick  21.0    Brussels
2  krish  19.0   Stockholm
3   jack  18.0       Delhi
4    Tom   NaN  California

但是,如果您更改'A'Apple'a'那么它将不再被Apple视为一个组织。


推荐阅读