2016-11-06 5 views
4

私は、次の段落の構造からこの種の情報を抽出しようとしています:NLP - Pythonで情報抽出(スペイシー)

women_ran men_ran kids_ran walked 
     1  2  1  3 
     2  4  3  1 
     3  6  5  2 

text = ["On Tuesday, one women ran on the street while 2 men ran and 1 child ran on the sidewalk. Also, there were 3 people walking.", "One person was walking yesterday, but there were 2 women running as well as 4 men and 3 kids running.", "The other day, there were three women running and also 6 men and 5 kids running on the sidewalk. Also, there were 2 people walking in the park."] 

私はNLPライブラリとしてPythonのspaCyを使用しています。私はNLPの仕事には新しく、そのような文章からこの表情報を抽出する最良の方法について何らかの指針を期待しています。

人が走っているのか歩いているのかを特定するだけの問題だったら、私はsklearnを使って分類モデルに合っていますが、抽出する必要がある情報は明らかにそれよりも細かいですそれぞれのサブカテゴリと値を取得します)。どんな指針も大変ありがとうございます。

答えて

7

これに依存関係解析を使用したいと思うでしょう。 the displaCy visualiserを使って、例文の視覚化を見ることができます。

あなたは、いくつかの異なる方法を必要とするルールを実装することができ - 多くのXPathクエリを記述する複数の方法が常に存在しているかのように、DOMセレクタを、などこのような

何かが動作するはずです:

nlp = spacy.load('en') 
docs = [nlp(t) for t in text] 
for i, doc in enumerate(docs): 
    for j, sent in enumerate(doc.sents): 
     subjects = [w for w in sent if w.dep_ == 'nsubj'] 
     for subject in subjects: 
      numbers = [w for w in subject.lefts if w.dep_ == 'nummod'] 
      if len(numbers) == 1: 
       print('document.sentence: {}.{}, subject: {}, action: {}, numbers: {}'.format(i, j, subject.text, subject.head.text, numbers[0].text)) 
textであなたの例について

あなたが取得する必要があります。

document.sentence: 0.0, subject: men, action: ran, numbers: 2 
document.sentence: 0.0, subject: child, action: ran, numbers: 1 
document.sentence: 0.1, subject: people, action: walking, numbers: 3 
document.sentence: 1.0, subject: person, action: walking, numbers: One 
+0

私は、XPathクエリまたはDOMセレクタを書いたことがありません。どうか説明していただけますか? – kathystehl

+1

@kathystehl XPathは、XML(HTML)ドキュメントの場所を指定します。したがって、XPathクエリは、XMLまたはHTMLの特定の要素を見つける方法です。 [wikpedia](https://en.wikipedia.org/wiki/XPath)を参照してください。 DOMセレクタは、HTMLドキュメント内の任意のCSS要素 'id'または' class'です(DOMは、javascriptなどで扱うHTML/XMLドキュメント/ツリーのデータ構造です)。だから、idとclassでフィルターをかけて要素を見つけることができます。 NLPでは、依存関係パーサーが、構造化されていないテキストを、DOMセレクターフィルターとXPathクエリでこのように照会できるタグ付きのHTMLに似たツリーデータ構造に変換します。 – hobs

関連する問題