Как создать оценку сходства для двух документов - PullRequest
0 голосов
/ 15 июня 2019

Я хотел бы сравнить два документа семантически и получить оценку сходства. Следующие документы взяты из Википедии, и при их сравнении я ожидаю увидеть более высокий балл для world_1 и world_2, поскольку они имеют схожий контекст.

Будет ли хорошим примером подходить обучение модели Doc2vec на "world_1" и тестирование двух других документов с этой моделью?

thermo = "Термодинамика в основном основана на наборе из четырех законов, которые универсально применимы при применении к системам, которые находятся в пределах ограничений, подразумеваемых каждым. В различных теоретических описаниях термодинамики эти законы могут быть выражены в, казалось бы, различных формах, но наиболее выдающимися формулировками являются следующие: нулевой закон термодинамики: если две системы находятся в тепловом равновесии с третьим, они также находятся в тепловом равновесии друг с другом. Из этого утверждения следует, что тепловое равновесие является отношением эквивалентности на множестве термодинамические системы на рассмотрении. "

world_1 = "Первая мировая война (часто сокращенно именуемая Первой мировой или Первой мировой войной), также известная как Первая мировая война или Великая война, была глобальной войной, берущей начало в Европе с 28 июля 1914 года по 11 ноября 1918 года. как война, чтобы положить конец всем войнам, [7] она привела к мобилизации более 70 миллионов военнослужащих, в том числе 60 миллионов европейцев, что делает его одной из крупнейших войн в истории. [8] [9] Это также одна из самые смертоносные конфликты в истории [10], по оценкам, девять миллионов комбатантов и семь миллионов мирных жителей стали прямым результатом войны, а геноцид и пандемия гриппа 1918 года привели к гибели от 50 до 100 миллионов человек во всем мире. 28 июня 1914 года Гаврило Принцип, боснийский сербский югославский националист, убил австро-венгерского наследника эрцгерцога Франца Фердинанда в Сараево, что привело к июльскому кризису ".

world_2 = "Вторая мировая война (часто сокращенно Вторая или Вторая мировая война), также известная как Вторая мировая война, была глобальной войной, которая длилась с 1939 по 1945 год. Подавляющее большинство стран мира, включая все великие державы - в итоге сформировались два противоборствующих военных альянса: Союзники и Ось. Появилось состояние тотальной войны, в котором приняли непосредственное участие более 100 миллионов человек из более чем 30 стран. Основные участники бросили весь свой экономический, промышленный и научный потенциал за военные усилия , стирая грань между гражданскими и военными ресурсами. Вторая мировая война была самым смертоносным конфликтом в истории человечества, в котором погибло от 50 до 85 миллионов человек, большинство из которых были гражданские лица в Советском Союзе и Китае. "

1 Ответ

0 голосов
/ 15 июня 2019

Да, но вы бы хотели обучить модель Doc2Vec большому набору документов, который содержит полный спектр тем документов, которые вы хотите представить - например, все статьи Википедии, - а не только один документ.

Затем, если документы, которые вы хотите сравнить, были названы в обучающем наборе, вы можете найти их векторы из модели. Но если они являются новыми документами, использующими похожий язык, вы можете использовать метод Doc2Vec.infer_vector() для их слов-токенов (который должен быть предварительно обработан / маркирован так же, как и данные обучения).

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

Выполнение этого для большого набора документов-троек - хороший процесс оценки модели! Фактически, в статье, посвященной исходной работе «Вектор абзаца» (Doc2Vec), это то, что используется для оценки и оптимизации параметров алгоритма в отношении корпусов документов Википедии и Arxiv. См:

Вложение документа с векторами абзаца

...