Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NLTK POS标记提取,已尝试键,值,但尚未出现_Python_Pandas_Tuples_Nltk - Fatal编程技术网

Python NLTK POS标记提取,已尝试键,值,但尚未出现

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

我有一个使用NLTK to POS标记的姓名列表。我将其与wordsegment一起使用,因为名称混乱不堪,如
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。由于此答案解决了您的问题,请单击左侧的大复选标记“接受”。