【发布时间】:2020-04-05 23:00:12
【问题描述】:
我是基于 NLP 的编程的新手。我正在尝试使用 NLP 将单词与现有数据集进行比较。
我有一个如下所示的数据框
现在,我有一个像“krish Stockholm”这样的输入文本,程序应该将每个单词标记到训练数据集的列标签并显示如下所示
krish:名字
斯德哥尔摩:城市
可以使用 spacy 完成吗?感谢指导。
【问题讨论】:
我是基于 NLP 的编程的新手。我正在尝试使用 NLP 将单词与现有数据集进行比较。
我有一个如下所示的数据框
现在,我有一个像“krish Stockholm”这样的输入文本,程序应该将每个单词标记到训练数据集的列标签并显示如下所示
krish:名字
斯德哥尔摩:城市
可以使用 spacy 完成吗?感谢指导。
【问题讨论】:
您可以使用 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
但如果您将Apple 中的'A' 更改为'a',那么它将不再将Apple 识别为一个组织。
【讨论】: