Рассчитать сходство между языками фраз (используя, например, MUSE и Gensim) - PullRequest
0 голосов
/ 25 октября 2019

Я новичок в NLP и Word Embeddings, и мне все еще нужно изучить многие понятия в этих темах, поэтому любые указатели будут оценены. Этот вопрос относится к этому и этому , и я думаю, что, возможно, произошли события после того, как были заданы эти вопросы. Facebook MUSE предоставляет выровненные, контролируемые вложения слов для 30 языков , и его можно использовать для расчета сходства слов в разных языках. Насколько я понимаю, вложения, предоставляемые MUSE, удовлетворяют требованию совместимость координатного пространства . Кажется, что возможно загрузить эти вложения в библиотеки, такие как Gensim , но мне интересно:

  1. Можно ли загрузить многоязычные вложения слов в Gensim (или другиебиблиотеки), и если да, то:
  2. Какой тип меры сходства может подходить в этом случае использования?
  3. Как использовать эти загруженные вложения слов для вычисления показателя языкового сходства между языками * вместослова?

* например, " ÖPNV " на немецком языке против " Trasporto pubblico locale " на итальянском языке для английского термина " Public Transport ».

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

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Усреднение всех слов текста вместе, чтобы получить единый суммарный вектор для текста, а затем сравнение этого суммарного вектора с другими текстовыми векторами - это один быстрый и простой подход, как описано в ответе @ Jindřich.

Если Facebook обеспечил, чтобы эти векторы находились «в одном и том же координатном пространстве», то отдельные слова или средние последовательности слов (фразы / предложения / и т. Д.) Можно сравнивать, используя типичное косинусоподобие- даже на разных языках.

Но есть и другие более сложные способы сравнения серий слов, когда вы начинаете с векторов слов, которые могут обеспечить более детальную оценку, чем простые средние сравнения. Например, «Расстояние для Word Mover» использует в качестве входных данных полный набор векторов слов каждого текста, а не один суммарный вектор.

Однако рассчитать это немного дороже, особенно для длинных текстов - потому что он, по сути, ищет минимальный набор переходов, которые «перемещают» «груды смысла» в одном тексте (как представлено егопозиции слова в векторном пространстве), чтобы соответствовать другому тексту.

Он доступен в gensim как функция wmdistance на любом наборе KeyedVector стилей слов-векторов, но он предполагает оба ваших текстанарисовать их векторы из того же набора векторов. Вам придется адаптировать код для рисования из двух разных векторов или каким-то образом объединить двухязыковые векторы в один KeyedVectors.

1 голос
/ 25 октября 2019

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

Конечно, вы можете загрузить столько же наборов встраивания слов в Gensim, но вам потребуется реализовать перекрестныйЯзыковое сравнение самостоятельно. Вы можете использовать вектор, используя квадратные скобки:

model = gensim.models.fasttext.load_facebook_model('your_path')
vector = model['computer']

Просто используйте косинусное сходство для сравнения вектора. Если вы не хотите писать это самостоятельно, используйте scipy .

...