nlp - 使用 pandas 数据框将自定义标签分配给 spacy
问题描述
我是基于 NLP 的编程的新手。我正在尝试使用 NLP 将单词与现有数据集进行比较。
我有一个如下所示的数据框
现在,我有一个像“krish Stockholm”这样的输入文本,程序应该将每个单词标记到训练数据集的列标签并显示如下
克里希:名字
斯德哥尔摩 : 城市
可以使用 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
但是,如果您更改'A'
为Apple
,'a'
那么它将不再被Apple
视为一个组织。
推荐阅读
- jython-music - Jython Music 中的 Timer setDelay() 问题
- c# - Xamarin 表单按钮背景
- python - 令人困惑的语法错误python 3.6.5
- visual-studio-2015 - Nuget 包列表未更新
- reactjs - ReactJS 将函数从 Parent 传递给 Child 抛出 TypeError: this.props.passedFunction is not a function
- java - 我正在用 java 制作一个程序,打印从 1 到 x 的数字(x 是用户输入值)。这是使用 for 循环和方法语句
- data-binding - Xamarin.Forms 中标签 StringFormat 的本地化
- apache-spark - RDD、DataFrames、Spark SQL:360 度对比?
- vba - 用于操作 Office 365 主题颜色的 VBA 代码?
- maven - 为什么我会从 Maven Central 收到“收到致命警报:protocol_version”或“peer not authenticated”?