【问题标题】:assigning custom label to spacy using pandas dataframe使用 pandas 数据框将自定义标签分配给 spacy
【发布时间】:2020-04-05 23:00:12
【问题描述】:

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

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

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

krish:名字

斯德哥尔摩:城市

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

【问题讨论】:

    标签: nlp spacy


    【解决方案1】:

    您可以使用 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 识别为一个组织。

    【讨论】:

    • 谢谢你 Manoj。我正在寻找一种方法来实现以下功能。我可以训练数据框中的值,以便对输入字符串的任何预测都能得到数据框的列名吗?例如:“krish Stockholm”应该让我知道数据框 krish 的列名应该返回“Name”,Stockholm 应该根据训练返回“City”
    • 您想使用 Spacy 训练的模型还是想用自己的数据训练模型?我已经提到了您可以与 Spacy 一起使用的方法。使用您自己的训练数据进行预测将是一项艰巨的任务,因为您需要涵盖数百万个姓名。
    • Manoj,是的。我在链接中发布了我的要求。如果您可以建议通过其他技术实现他的任何可能性,将不胜感激。再次感谢stackoverflow.com/questions/61045175/…
    猜你喜欢
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2022-12-01
    • 2013-06-19
    • 2014-12-30
    • 1970-01-01
    • 2020-12-15
    • 2020-09-30
    相关资源
    最近更新 更多