какая функция подобия nltk.corpus.wordnet подходит для поиска сходства двух слов? - PullRequest
5 голосов
/ 13 сентября 2011

какая функция сходства в nltk.corpus.wordnet Подходит для поиска сходства двух слов?

 path_similarity()?
    lch_similarity()?
    wup_similarity()?
    res_similarity()?
    jcn_similarity()?
    lin_similarity()?

Я хочу использовать функцию для word clustering и yarowsky алгоритма для поиска аналога collocation вбольшой текст.

Ответы [ 2 ]

7 голосов
/ 13 сентября 2011

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

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

3 голосов
/ 23 сентября 2011

Я сам играл с NLTK / wordnet с целью попытаться сопоставить некоторые тексты каким-либо автоматическим способом.Как отмечает ответ Теда Педерсена, довольно быстро становится ясно, что функции подобия в nltk.corpus.wordnet дают ненулевое сходство только для довольно тесно связанных терминов с твердой родословной IS-A.

То, что я в итоге сделал, быловзяв словарный запас в моих текстах, а затем используя лемму-> synset-> леммы и леммы-> Similar_tos, чтобы вырастить свой собственный график связывания слов (graph_tool фантастика для этого) и затем подсчитать минимальное количество прыжков необходимо, чтобы связать 2 слова, чтобы получить некоторую (не) меру сходства между ними (довольно интересно распечатать их; как, например, смотреть очень странную игру с ассоциацией слов).На самом деле это работало достаточно хорошо для моих целей, даже без всякой попытки учесть POS / смысл.

...