Создание словаря слов из большого текста - PullRequest
3 голосов
/ 06 апреля 2010

У меня есть текстовый файл, содержащий сообщения на английском / итальянском.Я хотел бы прочитать сообщения в матрицу данных, чтобы каждая строка представляла сообщение, а каждый столбец - слово.Ячейки в матрице подсчитывают, сколько раз каждое слово появляется в записи.Словарь должен состоять из всех слов во всем файле или не исчерпывающего английского / итальянского словаря.

Я знаю, что это обычный существенный этап предварительной обработки для НЛП.И я знаю, что это довольно тривиально, так как я хотел бы использовать какой-то инструмент, специфичный для домена NLP, поэтому я обрезаю стоп-слова и т. Д.задача?

Кто-то упоминал apache lucene, знаете ли вы, можно ли сериализовать индекс lucene в структуру данных, аналогичную моим потребностям?

Ответы [ 4 ]

2 голосов
/ 06 апреля 2010

То, что вы хотите, настолько просто, что в большинстве языков я бы предложил вам развернуть собственное решение, используя массив хеш-таблиц, которые отображаются из строк в целые числа. Например, в C #:

foreach (var post in posts)
{
  var row = new Dictionary<string, int>();

  foreach (var word in GetWordsFromPost(post))
  {
    IncrementContentOfRow(row, word);
  }
}

// ...

private void IncrementContentOfRow(IDictionary<string, int> row, string word)
{
  int oldValue;
  if (!row.TryGet(word, out oldValue))
  {
    oldValue = 0;
  }

  row[word] = oldValue + 1;
}
2 голосов
/ 06 апреля 2010

Может быть, вы хотите посмотреть на GATE . Это инфраструктура для добычи и обработки текста. Вот что делает GATE (я получил это с сайта):

  • программное обеспечение с открытым исходным кодом, способное решить практически любую задачу обработки текста
  • зрелое и обширное сообщество разработчиков, пользователей, преподавателей, студентов и ученых
  • определенный и повторяемый процесс создания надежных и поддерживаемых рабочих процессов обработки текста
  • в активном использовании для всех видов задач и приложений языковой обработки, в том числе: голос клиента; исследования рака; исследование наркотиков; поддержка при принятии решения; прием на работу; веб-майнинг; извлечение информации; семантическая аннотация
  • результат многомиллионной программы НИОКР, запущенной с 1995 года, финансируемой коммерческими пользователями, ЕС, BBSRC, EPSRC, AHRC, JISC и т. Д.
  • используется корпорациями, МСП, исследовательскими лабораториями и университетами по всему миру
  • Затмение естественной языковой инженерии, Lucene of Extraction Information, ISO 9001 Text Mining
0 голосов
/ 09 апреля 2010

Благодаря комментарию @Mikos я погуглил термин «матрица документа-термина» и нашел TMG (Генератор текста в матрицу).

Я нашел это подходящим для моих нужд.

0 голосов
/ 07 апреля 2010

Вы можете проверить:

  • лук - ветеранская библиотека C для классификации текста; Я знаю, что он хранит матрицу, для ее получения может потребоваться взлом.
  • Weka - среда машинного обучения Java, которая может обрабатывать текст и строить матрицу
  • Сообщение в блоге Суджита Пала о создании матрицы терминов-документов с нуля
  • Если вы настаиваете на использовании Lucene, вы должны создать индекс, используя векторы терминов, и использовать что-то вроде цикла над getTermFreqVector () , чтобы получить матрицу.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...