2016-08-23 42 views
1

Spacyが自然な音声処理のための強力なPythonモジュールであると言われて以来、私は名詞以上の単語をグループ化する方法を切望しています最も重要なのは、前置詞のフレーズです。 Spacy関数があるとは思いますが、SpacySpaCyのインポートは既にプロジェクトで実装されていると思います。 それにもかかわらず、私はフレーズの認識/チャンクの可能性については開いています。Python:Spacyなどを使用した名詞句(例:前置詞)以外のチャンク

+0

はあなたが特に何をしたいの例を与えることができますか?おそらく、それに対応する望ましい出力を持つ入力例のように。 – Harrison

+1

もちろん。ドイツ語の入力の翻訳として、 "私は大学に運転するのにどれくらい時間がかかりますか?" (ドイツ語で "Wie lange brauche ich bis zur Uni?")。前置詞句がどこから構成されているかを知ることによって、あるいは他の分野で使われているような正確な規則(PP→PREP + NP)を記述することによって、[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'] 
関連する問題