Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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 按pos_标记过滤空间名词块_Python_Nlp_Spacy_Chunks_Pos Tagger - Fatal编程技术网

Python 按pos_标记过滤空间名词块

Python 按pos_标记过滤空间名词块,python,nlp,spacy,chunks,pos-tagger,Python,Nlp,Spacy,Chunks,Pos Tagger,正如subc行所说,我试图根据名词组的各个POS标记提取它们的元素。名词组的元素似乎无法访问全局句子词性标记 为了证明这一问题: [i.pos表示nlp中的i(“在风景优美的地方喝上好咖啡!”)。名词块] >>> AttributeError:'spacy.tokens.span.span'对象没有属性'pos\u' 以下是我的低效解决方案: def解析(文本): doc=nlp(text.lower()) 标签=[(idx,i.text,i.pos_417;)用于枚举(doc)中的idx

正如subc行所说,我试图根据名词组的各个POS标记提取它们的元素。名词组的元素似乎无法访问全局句子词性标记

为了证明这一问题:


[i.pos表示nlp中的i(“在风景优美的地方喝上好咖啡!”)。名词块]
>>> 
AttributeError:'spacy.tokens.span.span'对象没有属性'pos\u'
以下是我的低效解决方案:

def解析(文本):
doc=nlp(text.lower())
标签=[(idx,i.text,i.pos_417;)用于枚举(doc)中的idx,i)
chunks=[i代表文档中的i.名词\u chunks]
指数=[]
对于块中的c:
扩展索引(j表示范围内的j(c.start\u char,c.end\u char))
非_chunks=[w代表“”中的w。连接([i代表idx,i代表枚举(文本),如果idx不在索引中。)。拆分(“”)
如果w!='']
chunk_words=[tup[1]表示tup in标记,如果tup[1]不在非_块中,tup[2]不在['DET'、'VERB'、'SYM'、'NUM']]。#这些是我想从一开始就过滤掉的POS标记!
新的_块=[]
对于块中的c:
新词=[w代表str(c)中的w。如果w代表chunk\u词,则拆分(“”)
如果len(新词)>1:
新词块=''.join(新词)
新增块。追加(新增块)
返回新的_块
解析(
"""
我可能对柜台咖啡有偏见,因为我住在镇上,但这是一个很好的地方,可以煮一杯很好的咖啡。我来这里已经两年了,希望我能早点找到它。它位于森林公园的中心,有大量的路边停车场。这里的咖啡很棒……其他很多词都可以形容它,但这就完美地总结了。你可以一磅一磅地喝咖啡,点一杯热饮,他们也有食物。周末,有Do Rite甜甜圈带来的甜甜圈,几乎有一个狂热的追随者。从高端价格来看,食物有点贵,但完全值得。我是一个自我承认的拿铁势利小人,他们做了一杯令人惊叹的拿铁。他说re.你可以加脱脂奶、全脂奶、杏仁奶或燕麦奶,他们会做到的。我总是点简易泡沫,他们总是做得很完美。我女朋友喜欢加燕麦奶的柴拿铁,我承认它很不错。让他们尝尝。
""")
>>>
[“柜台咖啡”,
“好地方”,
“大杯”,
“森林公园”,
"路边泊车",,
“许多其他词”,
“热饮”,
"近乎邪教",,
“高端价格”,
“拿铁势利鬼”,
“神奇拿铁”,
“燕麦牛奶”,
“易起泡”,
“柴拿铁”,
“燕麦奶”]

欢迎对同一解决方案采取任何更快的方法

此链接的原始信用:

输出:

['a Great coffee', 'a place with a great view', 'a great view']

此链接的原始信用:

输出:

['a Great coffee', 'a place with a great view', 'a great view']
这不起作用:

[i.pos_ for i in nlp("Great coffee at a place with a great view!").noun_chunks]
因为
noun_chunks
返回
Span
对象,而不是
Token
对象

您可以通过迭代标记来访问每个名词块中的POS标记:

nlp = spacy.load("en_core_web_md")
for i in nlp("Great coffee at a place with a great view!").noun_chunks:
    print(i, [t.pos_ for t in i])
这会给你

Great coffee ['ADJ', 'NOUN'] 
a place ['DET', 'NOUN'] 
a great view ['DET', 'ADJ', 'NOUN']
这不起作用:

[i.pos_ for i in nlp("Great coffee at a place with a great view!").noun_chunks]
因为
noun_chunks
返回
Span
对象,而不是
Token
对象

您可以通过迭代标记来访问每个名词块中的POS标记:

nlp = spacy.load("en_core_web_md")
for i in nlp("Great coffee at a place with a great view!").noun_chunks:
    print(i, [t.pos_ for t in i])
这会给你

Great coffee ['ADJ', 'NOUN'] 
a place ['DET', 'NOUN'] 
a great view ['DET', 'ADJ', 'NOUN']

天哪,那太简单了。你是个英雄!天哪,那太简单了。你是个英雄!