Python NLTK POS标记提取,已尝试键,值,但尚未出现
我有一个使用NLTK to POS标记的姓名列表。我将其与wordsegment一起使用,因为名称混乱不堪,如Python NLTK POS标记提取,已尝试键,值,但尚未出现,python,pandas,tuples,nltk,Python,Pandas,Tuples,Nltk,我有一个使用NLTK to POS标记的姓名列表。我将其与wordsegment一起使用,因为名称混乱不堪,如thisisme 因此,我已经成功地使用循环对这些名称进行POS标记,但是,我无法提取POS标记。整个练习都是通过CSV完成的 这就是我希望CSV在一天结束时的样子 name, length, pos thisisyou 6 NN, ADJ 到目前为止,我的代码是 import pandas as pd import nltk import wordsegment fr
thisisme
因此,我已经成功地使用循环对这些名称进行POS标记,但是,我无法提取POS标记。整个练习都是通过CSV完成的
这就是我希望CSV在一天结束时的样子
name, length, pos
thisisyou 6 NN, ADJ
到目前为止,我的代码是
import pandas as pd
import nltk
import wordsegment
from wordsegment import segment
from nltk import pos_tag, word_tokenize
from nltk.tag.util import str2tuple
def readdata():
datafileread = pd.read_csv('data.net.lint.csv')
domain_names = datafileread.DOMAIN[0:5]
for domain_name in domain_names:
seg_words = segment(domain_name)
postagged = nltk.pos_tag(seg_words)
limit_names = postagged
for keys,values in postagged:
print (posttagged)
readdata()
我得到了这个结果
NN
NN
ADJ
NN
这看起来不错,但它是错的。某些POS标签不应位于新行上。它应该只是像
NNNN
一样混乱,print
函数将在每次使用它时插入一个换行符。你需要避免这种情况。试着这样做:
for domain_name in domain_names:
seg_words = segment(domain_name)
postagged = nltk.pos_tag(seg_words)
tags = ", ".join(t for w, t in postagged)
print(domain_name, LENGTH, tags)
join()。我刚刚写了LENGTH
,因为我不知道在您的示例中如何得到6
。填上你的意思
另外,这里不需要它,但是你可以告诉print()
不要像这样添加最后的换行:print(word,end=”“)
谢谢alexis,它工作得很好。我几个小时前就应该请求帮助了。你能解释一下(t代表w,t在postaged中),thanksIt是a,并传递了相当于字符串列表的join()
吗。另请参见。这个特定的生成器表达式抛出单词并保留标记。您可以这样检查它:print(list(t表示w,t表示postaged))
.PS。由于此答案解决了您的问题,请单击左侧的大复选标记“接受”。