2013-02-11 2 views
3

Обычно один хочет получить функцию из текста, используя мешок слов подхода, считая слова и рассчитать различные меры, например, ТФ-IDF значений, например: How to include words as numerical feature in classificationВыделение признаков из одного слова

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

Эта проблема называется? Могу ли я узнать сходство и особенности слов, просто взглянув на большое количество документов?

Я не буду делать реализацию на английском языке, поэтому я не могу использовать базы данных.

+1

Ваше имя неверное. Вы хотите извлечь _relations_ между словами (точнее, _concepts_) из больших корпусов, а не с отдельных слов. Что касается названия этой проблемы, я бы назвал это _автоматическим созданием онтологии из неструктурированного текста. – jogojapan

+0

векторные вложения слов типа word2vec, перчатки или fastText? – user

ответ

3

hmm, извлечение функции (например, tf-idf) на текстовые данные основаны на статистика. С другой стороны, вы ищете смысл (семантика). Поэтому такой метод, как tf-idef, не будет работать для вас.

В НЛП существует 3 основных уровня:

  1. морфологический анализ
  2. синтаксический анализ
  3. семантические анализы

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

Насколько я понимаю, вы хотите знать некоторые отношения между словами, это можно сделать с помощью так называемых деревьев зависимость банков (или просто Treebank): http://en.wikipedia.org/wiki/Treebank. Это база данных/график предложений, где слово можно рассматривать как узел и отношения как дуги. Существует хорошая Treebank для чешского языка и английского будет также некоторые, но и для многих «менее укрытые» языков, это может быть проблемой, чтобы найти один ...

+0

Спасибо за информацию! – user1506145

+0

Сначала вы объясняете разницу между синтаксисом и семантикой, а затем вы предлагаете использовать древовидную структуру (которая в основном относится к синтаксису) для извлечения семантических отношений? – jogojapan

+0

@jogojapan Я не был действительно тем, чего хочет пользователь1506145. Это похоже на что-то между собой, поэтому я дал ему понять, о чем идет речь, и теперь он может легко найти подходящую литературу и выяснить, подходит ли ему древесный банк, или ему нужно что-то еще ... Видите ли вы некоторые несогласованность там? – xhudik

1

user1506145,

Вот простой идея, которую я использовал в прошлом. Соберите большое количество коротких документов, таких как статьи в Википедии. Произведите подсчет слов для каждого документа. Для документа-го и -м слова пусть

I = количество документов,

J = число слов,

x_ij = количество раз -е слово появляется в го документа, и

y_ij = ln (1+ x_ij).

Пусть [U, D, V] = svd (Y) - сингулярное разложение Y. Таким образом, Y = U * D * транспонирует (V)), U есть IxI, D - диагональ IxJ, а V - JxJ.

Вы можете использовать (V_1j, V_2j, V_3j, V_4j) как вектор функции в R^4 для j-го слова.

+0

Это говорит о том, что молоко и сливки связаны между собой? – jogojapan

0

Я удивлен, что в предыдущих ответах не упоминалось о вложении слов. Алгоритм вложения слов может создавать словарные векторы для каждого слова в заданном наборе данных. Эти алгоритмы могут переносить векторы слов из контекста. Например, рассматривая контекст следующих предложений, мы можем сказать, что «умный» и «умный» как-то связан. Потому что контекст почти такой же.

He is a clever guy He is a smart guy

долевой встречаемость матрица может быть построена, чтобы сделать это. Однако он слишком неэффективен. Известная техника, разработанная для этой цели, называется Word2Vec. Его можно изучить из следующих работ.
https://arxiv.org/pdf/1411.2738.pdf
https://arxiv.org/pdf/1402.3722.pdf

Я использую его на шведском языке. Он довольно эффективен в обнаружении похожих слов и полностью не контролируется.

Пакет можно найти в gensim и tensorflow.