Python: токенизация с фразами - PullRequest
6 голосов
/ 04 апреля 2011

У меня есть блоки текста, которые я хочу разметить, но я не хочу размечать пробелы и знаки пунктуации, как это представляется стандартом для таких инструментов, как NLTK .Есть определенные фразы, которые я хочу, чтобы токенизировали как один токен, вместо обычного токенизации.

Например, с учетом предложения «Западное крыло - это американский телесериал, созданный Аароном Соркиным, который первоначально транслировался на NBC с 22 сентября 1999 года по 14 мая 2006 года», и добавление фразы ктокенизатор " западное крыло ", получившиеся токены будут иметь вид:

  • западное крыло
  • равно
  • и
  • american
  • ...

Какой лучший способ сделать это?Я бы предпочел оставаться в рамках таких инструментов, как NLTK.

Ответы [ 3 ]

2 голосов
/ 01 декабря 2016

Вы можете использовать токенайзер выражений из нескольких слов MWETokenizer из NLTK:

from nltk.tokenize import MWETokenizer
tokenizer = MWETokenizer()
tokenizer.add_mwe(('the', 'west', 'wing'))
tokenizer.tokenize('Something about the west wing'.split())

Вы получите:

['Something', 'about', 'the_west_wing']
1 голос
/ 04 апреля 2011

Если у вас есть фиксированный набор фраз, которые вы ищете, то простое решение состоит в том, чтобы токенизировать ваш ввод и «собрать» токены из нескольких слов.В качестве альтернативы, выполните поиск и замену регулярных выражений перед токенизацией, которая превращает The West Wing в The_West_Wing.

. Для более сложных опций используйте regexp_tokenize или см. главу 7НЛТК книга .

0 голосов
/ 01 декабря 2016

Если вы не знаете конкретные фразы заранее, вы можете использовать класс scikit CountVectorizer () .У него есть возможность указать больший диапазон n-грамм (ngram_range), а затем игнорировать любые слова, которые не появляются в достаточном количестве документов (min_df).Вы можете выделить несколько фраз, которые вы не поняли, были обычными, но вы также можете найти несколько бессмысленных.Он также имеет возможность отфильтровывать английские стоп-слова (бессмысленные слова, такие как «is»), используя параметр stop_words.

...