2011-12-28 19 views
2

テキストファイルからデータを取得したいと考えています。私はNatural Language Toolkitを使用してそれを行うことに決めましたが、これを行うより良い方法があれば、私は提案することができます。ここでテキストから特定の情報を抽出する

は一例です:

私はサンフランシスコCAにニューヨークNYからのフライトが必要

このテキストから、私は起源と目的地の都市と州を取得したいと思います。

import nltk 
from nltk.text import * 
from nltk.corpus import PlaintextCorpusReader 

def readfiles():  
    corpus_root = 'C:\prototype\emails' 
    w = PlaintextCorpusReader(corpus_root, '.*') 
    t = Text(w.words()) 
    print "--- to ----" 
    print t.concordance("to") 

    print "--- from ----" 
    print t.concordance("from") 

私はそれのすべての使用を見つけるためにconcordance methodを使用します(私の場合はファイル)いくつかの入力からテキストを読むことができます:ここで

は、私がこれまで持っているものです。私は都市を抽出したい、 'to'と 'from'の後に来る状態情報を抽出したい。

質問 'to'と 'from'のインスタンスの後のテキストを見ている最善の方法は何ですか?

+0

このような場所をテキストから選ぶことは "名前付きエンティティの認識"として知られています - NLTKはこれを行うことができますが、地名辞典に基づいて独自のバージョンを適応させることもできます(GeoNames.orgはおそらくデータを検索します)。 – winwaed

答えて

1

おそらく、行単位でファイルを読む方がよいでしょうか?
その後のような単純なもの:

cityState = dataAfterTo.split(",") 
city = cityState[0] 
state = cityState[1].split()[0] 

あなたはもちろんのユーザー生成コンテンツを扱っている場合を除き。

+0

ええ、そのユーザーが生成されました。都市や州を分ける '、'があるかもしれません。私はPythonの言語やライブラリを使用してよりエレガントなソリューションを見つけることを望んでいる。 –