Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 31, 2008 16:14:20

Skaizer
От:
Зарегистрирован: 2008-08-31
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Управляемая очистка строки от ненужных символов

Здравствуйте!
Я новичок в программировании на python.
Поставил себе цель написать скрипт поиска нечетких дубликатов на python с использованием метода шинглов и супершинглов, вот возник вопрос.

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

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

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

Сорри за тупой вопрос, с питоном начинаю только знакомиться…



Офлайн

#2 Авг. 31, 2008 17:22:46

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

Управляемая очистка строки от ненужных символов

>>> 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)

Офлайн

#3 Авг. 31, 2008 19:51:35

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Управляемая очистка строки от ненужных символов

не хорошо называть переменные так: “str”



Офлайн

#4 Авг. 31, 2008 21:04:38

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

Управляемая очистка строки от ненужных символов

poltergeist
не хорошо называть переменные так: “str”
+1



Офлайн

#5 Сен. 2, 2008 13:08:30

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Управляемая очистка строки от ненужных символов

crchemist
reduce(lambda x,y: ‘ ’.join() if y not in stop_symbols else ‘', ’eee - edfc fgbtfbh'.split())
зачем так сложно?
проще сделать список и заджойнить
чем каждое слово присоединять,
а вообще интересно, но по моим тестам сложение оказалось быстрее джойна



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version