2016-06-26 4 views
1

Pythonでsyntaxnetのパーサタグ(例:VBD ROOT、NN nsubjなど)を使ってチャプタボットを作成したいと考えています。入力はコンソールで行われます。PythonでSyntaxnet POSタグを使用していますか?

質問:どのようにしてVBP ROOTだけの結果を得ることができますか?この呼び出しでASCII構文の構文解析ツリーを出力することができました:subprocess.call(["echo 'Bob brought the pizza to Alice.' | syntaxnet/demo.sh"], shell =True)しかし、私は特定の変数にアクセスしてPython変数に格納する方法について少し混乱しています。

p.s:私は一週間前にpythonを学び始めました。

答えて

2

あなたがPythonの初心者であり、使いたいものが品詞(POS)タグだけであれば、SyntaxNetはおそらく過剰です。 SpaCyは使いやすく、非常に正確です。

3

私はまた、PythonとSyntaxNetの両方の初心者です。私がやったことは、私がSyntaxNetフォルダにdemo.shから

bazel-bin/syntaxnet/conll2tree \ 
    --task_context=$MODEL_DIR/context.pbtxt \ 
    --alsologtostderr 

を削除することにより、ツリーからタブ区切りのテキストファイルにSyntaxNetの出力を変更したことでした。次に、あなたが、csv.readerでデータを読み取るlistにそれを回した後、「からsublistsの4列(列番号の開始を検索することができ

enter image description here

'open Book, which I have written with laboratory writer, with libreoffice writer.' | syntaxnet/demo.sh > output.txt

テキストファイルエコー、このコマンドを実行しますと、このようなものです0' )とROOT

を見つけるための7列目私は上記の説明のコードを配置:

#read from Syntaxnet output tab delimited textfile 
def readata(filename): 
     file=open(filename,'r') 
     lines=file.readlines() 
     lines=lines[:-1] 
     data=csv.reader(lines,delimiter='\t') 
#make a list of lists 
     lol=list(data) 
     return lol 
#find the verb which is ROOT of the sentence 
     lists=readata(filename) 
     for sublist in lists: 
      if sublist[7]=='ROOT' and sublist[4]=='VBP': 
        word=sublist[1] 

このコードはbignnerによって書かれていますが、少なくとも私のために働いたことに注意してください。

関連する問題