【问题标题】:Word-level pos tagging in PythonPython 中的词级 pos 标记
【发布时间】:2017-09-05 15:13:26
【问题描述】:

我正在尝试为每行中的每个单词做 pos 标记(每行包含几个句子)。

我有这个代码:

import nltk import pos_tag
import nltk.tokenize import word_tokenize

f = open('C:\Users\test_data.txt')
data = f.readlines()

#Parse the text file for NER with POS Tagging
for line in data:
    tokens = nltk.word_tokenize(line)
    tagged = nltk.pos_tag(tokens)
    entities = nltk.chunk.ne_chunk(tagged)
    print entities
f.close()

但代码为每一行给出了一个标签,输出如下所示:

[('公寓是全新的,干净整洁。', 'NNP'), ('"山上的小地方很棒。"', 'NNP'), ('非常舒适的地方靠近fatima luas stop。我喜欢这个地方。\njose 和 vadym 非常热情,对我很好。\n希望会再次入住。', 'NNP'), ('非常乐于助人和善于沟通的主人。地理位置优越,与公共交通便利交通 . 房间对一对夫妇来说有点太小了,感觉没有橱柜。\n\n其他地方都很干净,维护得很好。', 'NNP'), ('一切都和描述的一样。很漂亮。' , 'NNP')]

我的代码有“tokenizer”,我不知道我的代码有什么问题。我需要每个单词而不是每一行的 pos 标签。但是仍然应该用括号或类似的东西对每一行进行分块(或区分)。

【问题讨论】:

  • 我的电脑上python3没有问题。不知道怎么回事……
  • @mquantin,我对 python 3 也没有问题,但是代码给了我上面的输出,这是行级 pos 标记。您是否获得了单词级别的 pos 标记,这意味着每个单词都有一个 pos 标记?
  • @mquantin,仅供参考,在我的数据集中,括号中的句子存储在一行中。这可能就是为什么给括号中的句子加上一个 pos 标签的原因。
  • 是的,我得到了单词级别的 PoS 标签,括号被分块和 PoS 标记(如()
  • @mquantin 你能告诉我结果吗?结果如何?另外,您存储的数据是什么样的?在我的数据中,每个括号中的句子以 csv 格式存储在一行中。我真的需要得到和你一样的结果,所以非常感谢你的回答。

标签: python tokenize pos-tagger


【解决方案1】:

(我电脑上运行的纯复制粘贴)

运行您的代码(注意简单的导入语句):

#!/usr/bin/env python3
# encoding: utf-8
import nltk
f = open('/home/matthieu/Téléchargements/testtext.txt')
data = f.readlines()

for line in data:
    tokens = nltk.word_tokenize(line)
    tagged = nltk.pos_tag(tokens)
    entities = nltk.chunk.ne_chunk(tagged)
    print(entities)
f.close()

在以下 unicode 原始文本文件(3 行)上:

(this is a first example.)(Another sentence in another parentheses.)
(onlyone in that line)
this is a second one wihtout parenthesis. (Another sentence in another parentheses.)

我得到以下结果:

(S
(/(
this/DT
is/VBZ
a/DT
first/JJ
example/NN
./.
)/)
(/(
Another/DT
sentence/NN
in/IN
another/DT
parentheses/NNS
./.
)/))
(S (/( onlyone/NN in/IN that/DT line/NN )/))
(S
this/DT
...

如您所见,没有特别的问题。 您是否正确解析了 csv 数据? csv在你的情况下有用吗?您是否尝试使用简单的文本文件?

【讨论】:

  • 非常感谢!在我将数据编码更改为“utf-8”并出于某种原因安装“numpy”后,它解决了。感谢您的帮助。
  • 我做到了。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 2018-07-26
  • 2017-01-21
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
相关资源
最近更新 更多