2015-09-01 62 views
-1

如何在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 
+1

不知道我理解这个问题。如果你的问题是如何将一个形容词转换成相应的名词,这可能是有帮助的:http://stackoverflow.com/questions/14489309/convert-words-between-verb-noun-adjective-forms/16752477#16752477。您也可以查看此博客文章以获得更详细的解释:http://tech.swamps。io/convert-words-between-verbnounadjectiveb-forms-using-wordnet/ – bogs

+0

感谢您的回复。但我试图解决一个不同的问题。我想通过句子和单词(形容词)并得到相应的形容词在那个句子中描述的名词。这是否有意义? –

+1

考虑句子:“高兴学习”,你要提取什么(“高兴”,“学习”)? – bogs

回答

4

你正在试图解决的问题一般被称为依存分析。为了提取单词之间的这种关系,您需要更多的仅仅是简单的POS标记分析提供的单词的线性序列。考虑下面的句子:

“他买了一辆美丽而快速的汽车。”你会提取(美丽,汽车)和(快速,汽车)。你面临的问题不仅仅是过滤名词和副词之间的停用词。使用分析树分析可以更好地了解为什么这不是使用单词序列可以解决的问题。

这是我们的句子解析树:含确定器(DT)

(ROOT 
    (S 
    (NP (PRP He)) 
    (VP (VBD bought) 
     (NP (DT a) 
     (ADJP (JJ beautiful) 
      (CC and) 
      (JJ fast)) 
     (NN car))) 
    (. .))) 

正如你所看到的“美丽和快速车”是一个NounPhrase(NP)和AdjectivalPhrase(ADJP“美丽而快速“)和名词(NN,”汽车“)。一段时间以来使用的一种方法是创建一个基于规则的系统,从该分析树中提取对。幸运的是,已经开发出更好的解决方案,可以直接解决您的问题。

DependencyGraph

的依赖对是:

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) 

正如你可以看到这是正是你需要的。这些类型的依赖关系,所以你还需要筛选你有兴趣(AMODadvmod你的情况)

你可以找到依赖类型这里的完整列表的:http://nlp.stanford.edu/software/dependencies_manual.pdf 斯坦福分析器这里http://nlp.stanford.edu:8080/parser/ 斯坦福核心NLP演示(为凉可视化):演示这里http://nlp.stanford.edu:8080/corenlp/

你可以阅读有关使用Python创建一个依赖解析器这里一个伟大的文章(你需要训练数据虽然):https://honnibal.wordpress.com/2013/12/18/a-simple-fast-algorithm-for-natural-language-dependency-parsing/

Python接口CoreNLP:https://github.com/dasmith/stanford-corenlp-python

您也可以尝试编写自己的依存语法,NLTK提供了,一个API(寻找章“5依赖和依存语法”):http://www.nltk.org/book/ch08.html

相关问题