【问题标题】:NLTK Named Entity Category LabelsNLTK 命名实体类别标签
【发布时间】:2020-05-04 04:13:56
【问题描述】:

在谈到 NLTK 时,我总是碰壁。我已经能够对单个文本字符串进行标记和分类,但是,如果我尝试跨多行应用脚本,我会得到标记,但它不会返回对我来说最重要的部分。

import pandas as pd
import nltk
from nltk.tokenize import word_tokenize
from nltk.tag import pos_tag
+nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltk.download('maxent_ne_chunker')
nltk.download('words')
SENT_DETECTOR = nltk.data.load('tokenizers/punkt/english.pickle')

例子:

ex = 'John'
ne_tree =  nltk.ne_chunk(pos_tag(word_tokenize(ex)))
print(ne_tree)

输出:

(S (PERSON John/NNP))

这正是我正在寻找的。我需要的不仅仅是 NNP 类别。

当我在表格中应用它时,我只得到了令牌,没有类别。

例子:

df = pd.read_csv('ex3.csv')
df

输入:

Order   Text
0   0   John
1   1   Paul
2   2   George
3   3   Ringo

代码:

df['results'] = df.Text.apply(lambda x: nltk.ne_chunk(pos_tag(word_tokenize(x))))
df

输出:

print(df)

   Order    Text            results
0      0    John    [[(John, NNP)]]
1      1    Paul    [[(Paul, NNP)]]
2      2  George  [[(George, NNP)]]
3      3   Ringo    [[(Ringo, NN)]]

我正在获取令牌并且它在所有行中都有效,但它没有给我一个类别“PERSON”。

我真的需要分类。

这不可能吗?谢谢您的帮助。

【问题讨论】:

    标签: python-3.x pandas nltk jupyter


    【解决方案1】:

    我们开始...

    import pandas as pd
    import nltk
    from nltk.tokenize import word_tokenize
    from nltk.tag import pos_tag
    +nltk.download('punkt')
    nltk.download('averaged_perceptron_tagger')
    nltk.download('maxent_ne_chunker')
    nltk.download('words')
    df = pd.read_csv("ex3.csv")
    # print(df)
    text1 = df['text'].to_list()
    text =[]
    for i in text1:
        text.append(i.capitalize())
    # create a column for store resullts
    df['results'] = ""
    
    for i in range(len(text)):
        SENT_DETECTOR = nltk.data.load('tokenizers/punkt/english.pickle')
        ne_tree = nltk.ne_chunk(pos_tag(word_tokenize(text[i])))
        df['results'][i] = ne_tree[0].label()
    print(df)
    

    【讨论】:

    • 这可行,但如果我将文本字段中的任何值更改为小写,我会得到“AttributeError:'tuple' 对象没有属性'label'”。为什么它会关心第一个单词的大小写?
    • @JohnnySemicolon 我更改了代码,现在它应该可以工作了
    猜你喜欢
    • 2013-10-19
    • 2012-07-02
    • 2020-11-04
    • 2015-10-28
    • 2011-08-08
    • 2020-02-01
    • 2017-05-18
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多