Форум сайта python.su
0
к примеру есть строки
новы сапогиили
новые сапоги
новы и сапоги
тексткак силами питона фильтрануть текст и найти максимально похожие куски
текст
новые сапоги
текст
текст
новые сапоги
текст
текст
текст
сапоги новые
текст
текст
текст
Офлайн
3
qwerthonНет, это не подойдет.
где-то мельком видел библиотеку для сравнения файлов ( на базе хеш-функций или что-то подобное …)
Офлайн
14
Сначала определитесь: что такое “максимально похожий кусок”?
Офлайн
6
начните копать отсюда http://pypi.python.org/pypi/python-Levenshtein/
Офлайн
0
У меня была подобная задача. Я искал регулярным выражением.
Если есть более адекватное решения с удовольствием бы посмотрел.
Офлайн
0
Если текст небольшой, то можно накапливать каждую строку в хеш-таблицу, если она не похожа ни на одну строку из хеш-таблицы, а если похожа, то накапливать индекс с троки.
from collections import defaultdict
table = defaultdict(list)
a = ['ololo', 'hahaha', 'ololo', 'bugaga', 'ololo']
def similar(word1, word2):
if word1 == word2:
return 100
else:
return 0
for i, word in enumerate(a):
for j in table:
if similar(word, j) > 90:
table[j].append(i)
break
else:
table[word].append(i)
>>> table
>>> defaultdict(<type 'list'>, {'ololo': [0, 2, 4], 'bugaga': [3], 'hahaha': [1]})
Отредактировано (Фев. 6, 2011 12:52:21)
Офлайн
0
всем спасибо, расстояния Левенштейна ( и подобные ) должно помочь
я и не думал что их “реализация” есть на питоне …. чем дальше, тем больше мне этот язык нравится -)
Офлайн