2015-09-01 63 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

相關問題