Это одна из приятных проблем, когда сфера действия может варьироваться от домашнего задания до размера проекта Google.
Действительно, вы можете начать с одновременного появления слов (например, условной вероятности). Вы быстро обнаружите, что вы получаете список стоп-слов, связанных с большинством слов просто потому, что они очень популярны. Использование подъема условной вероятности позаботится о стоп-словах, но сделает отношение подверженным ошибкам в небольшом количестве (в большинстве случаев). Вы можете попробовать Жакара, но, поскольку он симметричен, будет много отношений, которые он не найдет.
Тогда вы можете рассмотреть отношения, которые появляются только на небольшом расстоянии от базового слова. Вы можете (и должны) рассматривать отношения, основанные на общем корпусе (например, Википедии) и конкретных пользователя (например, его электронные письма).
Очень скоро у вас будет множество мер по связности, когда все меры хороши и имеют некоторое преимущество над другими.
Чтобы объединить такие меры, я хотел бы свести проблему к проблеме классификации.
Вам следует создать набор данных из слов и пометить их как «связанные». Чтобы построить большой набор данных с метками, вы можете:
- Используйте источники известных связанных слов (например, старые добрые категории Википедии) для позитива
- Большинство слов, не связанных как родственные, не связаны между собой.
Затем используйте все меры, которые у вас есть, как особенности пар. Теперь вы находитесь в области контролируемой проблемы классификации. Создайте классификатор на основе набора данных, оцените его в соответствии с вашими потребностями и получите показатель сходства, который соответствует вашим потребностям.