Извлечение списка частот слов из большого корпуса - PullRequest
0 голосов
/ 13 января 2019

У меня большой английский корпус с именем SubIMDB , и я хочу составить список всех слов с их частотой. Это означает, что они появились во всем корпусе. Этот частотный список должен иметь некоторые характеристики:

  1. Такие слова, как «мальчик и мальчики» или другие грамматические особенности, такие как «получить и получить», одно и то же слово или лемма, и если есть 3 мальчика и 2 мальчика, они должны указывать их как «мальчик 5.» Пошли с неправильной формы (или ноги и ступни)
  2. Я хочу использовать этот список частот как своего рода словарь, поэтому всякий раз, когда я вижу слово в другой части программы, я хочу проверить его частоту в этом списке. Так что лучше, если его можно будет найти, не просматривая все.

Мои вопросы:

  1. Что касается первой проблемы, что мне делать? Lemmatize? или стемминг? или как мне это получить?
  2. Во-вторых, какой тип переменной я должен установить? как словарь или списки или что?
  3. Разве лучше всего сохранить его в CSV?
  4. Есть ли какой-нибудь подготовленный инструментарий для Python, делающий все это?

Большое спасибо.

1 Ответ

0 голосов
/ 13 января 2019

Как указано выше, вопрос (ы) основан на мнении и расплывчат, но вот некоторые направления:

  1. Оба будут работать для вашего случая. Стеблинг обычно проще и быстрее. Я предлагаю начать с nltk's PorterStemmer. Если вам нужна сложная лемматизация, взгляните на spaCy, IMO, это отраслевой стандарт.
  2. Вам нужен словарь, который дает вам амортизированный O (1) поиск, как только у вас есть основа / лемма. Также counter может стать полезным.
  3. Зависит от вашего варианта использования. CSV более «портативный», pickle может быть проще в использовании.
  4. В nltk и spaCy очень много "строительных блоков", сборка вашего трубопровода / моделей зависит от вас
...