Извлечение конкретной информации из текста

Я хотел бы получить некоторые данные из текстового файла. Я решил сделать это с помощью Natural Language Toolkit, но я открыт для предложений, если есть лучший способ сделать это.

Вот пример:

Мне нужен рейс из Нью-Йорка, штат Нью-Йорк, в Сан-Франциско, Калифорния.

Из этого текста я хотел бы получить город и штат для отправления и назначения.

Вот что у меня есть до сих пор:

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 метод, чтобы найти все случаи его использования. Я хочу извлечь город, информацию о состоянии, которая идет после «до» и «от».

Вопрос в том, как лучше всего смотреть на текст, который находится после экземпляров «до» и «от»?


person dev.e.loper    schedule 28.12.2011    source источник
comment
Выделение таких мест из текста известно как распознавание именованных объектов — NLTK может сделать это, хотя вы можете адаптировать свою собственную версию на основе географического справочника (GeoNames.org, вероятно, работает для поиска данных).   -  person winwaed    schedule 29.12.2011


Ответы (1)


Возможно, вам лучше прочитать файл построчно?
Тогда что-нибудь простое, например:

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

Если, конечно, вы не имеете дело с пользовательским контентом.

person Brian    schedule 28.12.2011
comment
Да, это создано пользователем. Так что может быть, а может и не быть «,», разделяющего город и штат. Я надеюсь найти более элегантное решение с использованием языка или библиотеки Python. - person dev.e.loper; 29.12.2011