2015-05-15 3 views
4

Я хочу знать, есть ли в любом случае, что я могу отменить их до нормальной формы?Как отменить слово в Python?

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

Но следующая часть проблемы требует от меня поиска похожих слов в данных, и я использую synsets nltk для вычисления сходства Wu-Palmer среди слов. Проблема в том, что synsets nltk не будут работать на словах, или, по крайней мере, в этом коде они не будут. check if two words are related to each other

Как это сделать? Есть ли способ отменить слово?

+1

Если вы реорганизуете свой рабочий процесс, вы можете работать с кортежами, в которых первым элементом является полное слово, а второе - строковое представление. Это неэффективно с точки зрения хранения, но это облегчит вам отслеживание ваших слов. – duhaime

+1

Как насчет того, чтобы проверить, связаны ли слова до того, как они закончились? Это возможно? Тогда вам не нужно хранить оба представления. – Rcynic

+0

@ Rcynic Да, я подумал об этом, но это сделало бы работу слишком напряженной, поскольку в ней слишком много слов, чтобы рассказать о ней. – user3667569

ответ

0

Я подозреваю, что вы на самом деле подразумеваете, что ствол «напряжен». Как и в случае, вы хотите, чтобы каждое время каждого разговора различалось каждое слово в сторону «базовой формы» глагола.

ЗАКАНЧИВАТЬ pattern пакет

pip install pattern 

Затем используйте функцию en.lemma для возврата основной формы глагола в.

import pattern.en as en 
base_form = en.lemma('ate') # base_form == "eat" 
+0

Это звучит разумно. Я проверю его, как только у меня появится шанс. Спасибо @Steve :) – user3667569

+0

Это не работает. Пример: ** более богатый ** должен быть ** богатым **, но он дает ** более богатый ** только – user3667569

+0

Если он не выполняет работу, вы можете «не принимать» этот ответ и ждать дополнительных предложений. – alexis

3

Нет, нет. С истощением вы теряете информацию не только о форме слова (как в еде против ест или съедаетесь), но и о самом слове (как в традициях против традиционного). Если вы не собираетесь использовать метод прогнозирования, чтобы попытаться предсказать эту информацию на основе контекста этого слова, нет способа вернуть его.

0

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

Для представления представления «Мешок слов» это кажется чрезмерно интенсивным с вычислительной точки зрения и каким-то образом поражает цель статистического характера подхода BoW.

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