Abh*_*tia 3 python nlp nltk stanford-nlp
如何在python中获得副词和形容词的相应动词和名词?似乎简单的继承和优先可能不是很准确.可能存在类似于例如的停用词.在我很高兴学习......
我不能将任何图书馆甚至问题陈述正式化.
现在代码.现在我想为句子中的每个形容词返回相应的副词和名词动词.请帮忙.
Code:
def pos_func(input_text):
#pos tagging code:
text=input_text
tokens=tokenize_words(text)
tagged=pos_tag(tokens)
pos_store(tagged)
def pos_store(tagged):
verbs=[]
adjectives=[]
adverbs=[]
nouns=[]
for tag in tagged:
pos=tag[1]
if pos[0]=='V':
verbs.append(tag[0])
elif pos[0]=='N':
nouns.append(tag[0])
elif pos[0]=='J':
adjectives.append(tag[0])
elif pos[0:2]=='RB':
adverbs.append(tag[0])
def tokenize_words(text):
tokens = TreebankWordTokenizer().tokenize(text)
contractions = ["n't", "'ll", "'m"]
fix = []
for i in range(len(tokens)):
for c in contractions:
if tokens[i] == c: fix.append(i)
fix_offset = 0
for fix_id in fix:
idx = fix_id - 1 - fix_offset
tokens[idx] = tokens[idx] + tokens[idx+1]
del tokens[idx+1]
fix_offset += 1
return tokens
Run Code Online (Sandbox Code Playgroud)
您尝试解决的一般问题称为依赖性解析.要提取单词之间的这种关系,您需要更多,然后只需简单的POS标记分析提供的单词的线性序列.考虑以下句子:
"他买了一辆漂亮而快速的汽车." 你会提取(漂亮,汽车)和(快速,汽车).你面临的问题不仅仅是在名词和副词之间过滤停用词.使用解析树分析可以让您更好地了解为什么这不是您可以使用单词序列解决的问题.
这是我们句子的解析树:
(ROOT
(S
(NP (PRP He))
(VP (VBD bought)
(NP (DT a)
(ADJP (JJ beautiful)
(CC and)
(JJ fast))
(NN car)))
(. .)))
Run Code Online (Sandbox Code Playgroud)
你可以看到"一辆漂亮而快速的汽车"是一个包含确定者(DT)和AdjectivalPhrase(ADJP,"美丽而快速")和名词(NN,"汽车")的NounPhrase(NP).一段时间使用的一种方法是创建一个基于规则的系统,该系统从该解析树中提取对.幸运的是,已经开发出更好的方法来直接解决您的问题.
依赖关系对是:
nsubj(bought-2, He-1)
root(ROOT-0, bought-2)
det(car-7, a-3)
amod(car-7, beautiful-4)
cc(beautiful-4, and-5)
conj:and(beautiful-4, fast-6)
amod(car-7, fast-6)
dobj(bought-2, car-7)
Run Code Online (Sandbox Code Playgroud)
如您所见,这正是您所需要的.这些是类型化的依赖项,所以你还需要过滤你感兴趣的那些(amod,advmod在你的情况下)
你可以在这里找到完整的依赖类型列表:http://nlp.stanford.edu/software/dependencies_manual.pdf Stanford Parser Demo:http://nlp.stanford.edu:8080 / parser/ Stanford Core NLP Demo(对于很酷的可视化)这里:http://nlp.stanford.edu:8080/corenlp /
你可以在这里阅读一篇关于用Python创建依赖解析器的好文章(你需要训练数据):https://honnibal.wordpress.com/2013/12/18/a-simple-fast-algorithm-for-natural -language依赖性-解析/
CoreNLP的Python接口:https://github.com/dasmith/stanford-corenlp-python
您也可以尝试编写自己的依赖语法,NLTK为此提供API(查找"5依赖关系和依赖语法"一章):http://www.nltk.org/book/ch08.html