首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用斯佩西那识别人,让人一个字?

用斯佩西那识别人,让人一个字?
EN

Stack Overflow用户
提问于 2022-07-15 14:15:34
回答 1查看 140关注 0票数 1

我想用Spacy NER来识别那个人,然后把它写成一个词。

我的数据集如下所示:

代码语言:javascript
复制
text     
use your superpowers
vote for Barack Obama
vote for Marine Le Pen
play with Michael Jordan
support the supporters

我希望我的最后输出如下所示:

代码语言:javascript
复制
text     
use your superpowers
vote for Barack_Obama
vote for Marine_Le_Pen
play with Michael_Jordan
support the supporters

这是我到目前为止掌握的代码:

代码语言:javascript
复制
 def get_ner (string):
     nlp = spacy.load("en_core_web_trf")
     doc = nlp(string)
     for token.text in doc:
         if token.ents=="Person":
         s= ent['start']
         e= ent['end']
         txt = txt[:s] + txt[s:e+1].replace(' ', '_') + txt[e:]
     return txt

 df['text']= df.text.apply(get_ner)

当我使用上面的代码时,我会收到一条错误消息。

代码语言:javascript
复制
AttributeError: name 'token' is not defined
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-16 13:38:14

如果使用Spacy,您的代码应该是:

代码语言:javascript
复制
nlp = spacy.load('en_core_web_trf')

def get_ner(txt):
    doc = nlp(txt)
    for ent in doc.ents:
        if ent.label_ == 'PERSON':
            s = ent.start_char
            e = ent.end_char
            txt = txt[:s] + txt[s:e+1].replace(' ', '_') + txt[e:]
    return txt

df['text'] = df['text'].apply(get_ner)

输出:

代码语言:javascript
复制
>>> df
                       text
0      use your superpowers
1     vote for Barack_Obama
2    vote for Marine_Le_Pen
3  play with Michael_Jordan
4    support the supporters
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72995392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档