Форум сайта python.su
Здравствуйте!
Я новичок в программировании на python.
Поставил себе цель написать скрипт поиска нечетких дубликатов на python с использованием метода шинглов и супершинглов, вот возник вопрос.
Допустим у нас есть текст, в нем присутствуют буквенные символы, цифры, знаки препинания и прочие символы.
Для сравнения текстов я использую функции хеширования, соответственно мне необходимо максимально отфильтровать текст от “незначимых” стоп-слов и символов.
Т.к. функция хэширования с аргументами: “Сиськи - это круто”, “Сиськи это круто”, “Сиськи-это круто”, “Сиськи -это круто”, “Сиськи- это круто” вернет абсолютно различные значениях для каждого из аргументов.
Я хочу привести эту строку к единому виду: “Сиськи это круто”, или же, если учитывать регистр, то “сиськи это круто”, чтобы исключить ненужные символы.
Аналогично и со стоп-словами, предлогами и т.д. “на”,“а”,“о”,“об”,“же”,“над” и т.д. Т.к. включение этих текстов в текст существенно изменит некоторые наборы шинглов, но логическое значение текста не изменится.
Вопрос заключается в том, как очистить текст от этих стоп-слов и символов. Я предполагал создать списки с каждым из ненужных мне слов. Далее прогнать текст какой-либо на поиск и удаление из него этих самых стоп-слов и символов.
На C++,php я знаю как это написать, скорее всего подобный алгоритм можно и реализовать на питоне так же, проверяя каждый символ в строке, и удаляя его, но быть может в питоне существуют уже готовые методы у какого-либо и объектов?
Сорри за тупой вопрос, с питоном начинаю только знакомиться…
Офлайн
>>> stop_symbols = ['' ,'-', 'edfc', 'eft'] # first must be ''
>>> str = reduce(lambda x,y: ' '.join([x, y]) if y not in stop_symbols else '', 'eee - edfc fgbtfbh'.split())
>>> str
'eee fgbtfbh'
>>>
Отредактировано (Авг. 31, 2008 21:05:56)
Офлайн
не хорошо называть переменные так: “str”
Офлайн
poltergeist+1
не хорошо называть переменные так: “str”
Офлайн
crchemistзачем так сложно?
reduce(lambda x,y: ‘ ’.join() if y not in stop_symbols else ‘', ’eee - edfc fgbtfbh'.split())
Офлайн