Найти - Пользователи
Полная версия: Управляемая очистка строки от ненужных символов
Начало » Python для новичков » Управляемая очистка строки от ненужных символов
1
Skaizer
Здравствуйте!
Я новичок в программировании на python.
Поставил себе цель написать скрипт поиска нечетких дубликатов на python с использованием метода шинглов и супершинглов, вот возник вопрос.

Допустим у нас есть текст, в нем присутствуют буквенные символы, цифры, знаки препинания и прочие символы.
Для сравнения текстов я использую функции хеширования, соответственно мне необходимо максимально отфильтровать текст от “незначимых” стоп-слов и символов.
Т.к. функция хэширования с аргументами: “Сиськи - это круто”, “Сиськи это круто”, “Сиськи-это круто”, “Сиськи -это круто”, “Сиськи- это круто” вернет абсолютно различные значениях для каждого из аргументов.
Я хочу привести эту строку к единому виду: “Сиськи это круто”, или же, если учитывать регистр, то “сиськи это круто”, чтобы исключить ненужные символы.
Аналогично и со стоп-словами, предлогами и т.д. “на”,“а”,“о”,“об”,“же”,“над” и т.д. Т.к. включение этих текстов в текст существенно изменит некоторые наборы шинглов, но логическое значение текста не изменится.

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

На C++,php я знаю как это написать, скорее всего подобный алгоритм можно и реализовать на питоне так же, проверяя каждый символ в строке, и удаляя его, но быть может в питоне существуют уже готовые методы у какого-либо и объектов?

Сорри за тупой вопрос, с питоном начинаю только знакомиться…
crchemist
>>> 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'
>>>
poltergeist
не хорошо называть переменные так: “str”
crchemist
poltergeist
не хорошо называть переменные так: “str”
+1
izekia
crchemist
reduce(lambda x,y: ‘ ’.join() if y not in stop_symbols else ‘', ’eee - edfc fgbtfbh'.split())
зачем так сложно?
проще сделать список и заджойнить
чем каждое слово присоединять,
а вообще интересно, но по моим тестам сложение оказалось быстрее джойна
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB