2016-08-23 207 views
1

由於我被告知Spacy是一個用於自然語音處理的如此強大的Python模塊,我現在正在拼命尋找一種將單詞分組到一起以超過名詞短語,最重要的是介詞短語。 我懷疑這是一個Spacy函數,但這將是我猜測的最簡單的方法(SpacySpaCy導入已經在我的項目中實現)。儘管如此,我對任何可能的短語識別/組塊都是開放的。Python:使用Spacy等將其他名詞短語(例如介詞)分成

+0

你能不能給你想要什麼具體的例子嗎?也許就像一個例子輸入與所需的輸出相對應。 – Harrison

+1

當然。作爲德語輸入的翻譯,請寫下如下句子:「我需要多長時間才能開車去大學?」 (德語「Wie lange brauche ich bis zur Uni?」)。我希望「通過遠程瞭解介詞短語是由什麼組成,或者通過陳述確切的規則(PP-> PREP + NP)就像在其他語言中使用的那樣,將[DETEP]作爲介詞階段分成[DET] python模塊。 由於SpaCy用於我的程序中的標記,似乎只支持名詞塊,我想有一個支持模塊或只是一個函數內部識別額外的塊。 –

回答

0

以下是獲取PP的解決方案。一般而言,您可以使用subtree獲得短語。

def get_pps(doc): 
    "Function to get PPs from a parsed document." 
    pps = [] 
    for token in doc: 
     # Try this with other parts of speech for different subtrees. 
     if token.pos_ == 'ADP': 
      pp = ' '.join([tok.orth_ for tok in token.subtree]) 
      pps.append(pp) 
    return pps 

用法:

ex = 'A short man in blue jeans is working in the kitchen.' 
doc = nlp(ex) 

get_pps(doc) 

此打印:

['in blue jeans', 'in the kitchen'] 
相關問題