2013-07-30 3 views
0

Я использую python и mysql. Вот мой кодУдалите почти повторяющуюся строку из списка строк, используя Difflib

cur.execute("SELECT distinct product_type FROM cloth_table") 
Product_type_list = cur.fetchall() 

Теперь Product_type_list является список строк, описывающих product_type как этого

product_type_list =['T_shirts', 'T_shirt', 'T-shirt', 'Jeans', 'Jean', 'Formal Shirt' 'Shirt'] 

Здесь в product_type_list есть запись 3 дубликата для футболки и 2 для каждого джинсы и рубашки ,

Теперь я хочу, чтобы мой Product_type_list быть как этот

Product_type_list=['T_shirt' , 'Jeans', 'Shirt'] 

Я думаю, что мы можем использовать quickratio Difflib.Sequencematcher в. Но как это сделать

ответ

0

Я мало знаю о пакете Difflib.Sequencematcher. Но для этого, как нечеткое совпадение, будет сделано использование концепции полнотекстового поиска MySql.

Попытайтесь найти логику соответствия FTS и решить эту проблему. А также некоторые концепции Soundex есть в БД, а также в Python.

Используя FTS, мы получаем оценку сравнения, как ранг, на основе ранга мы будем фильтровать наш список. Я сделал это, как аналогичную задачу, используя SQL Server FTS.

+0

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

+0

Я, как уже говорилось, работал над этим, как задачи на SQL Server. Найдите эту ссылку, которая может дать некоторые ранга FTS и soundex. http://msdn.microsoft.com/en-us/library/cc879245.aspx, http://msdn.microsoft.com/en-us/library/ms187384.aspx –

0

Я думаю, вы могли бы определить свой собственный алгоритм, чтобы решить эту проблему, так как большинство вещей зависит от домена, и ваши типы продуктов не такие большие, я полагаю. Например, формальная формальная рубашка должна игнорироваться в соответствии с вашим требованием, и это может быть неверно в других доменах. Поэтому сначала определите свои собственные слова остановки (слова, которые можно игнорировать в названии продукта), и удалите окончание 's' и обрезайте белые пробелы и '-', '_' вид не букв и конвертируйте в верхний регистр. Учитывая это, вы можете создать свой собственный алгоритм для решения этой проблемы. У меня была такая проблема, и решить ее с помощью моей собственной реализации, попробовав несколько существующих библиотек.

И вы должны продолжать улучшать свой алгоритм, поскольку он основан на эвристике и предположениях.

+0

Спасибо за ответ @karthikeyan Но решение вам предполагают, что «обрезка» «_» или «космос» не является постоянным решением, потому что здесь я дал вам образец списка product_type, чтобы лучше понять мою проблему, но в производстве есть записи и записи в этот раз я, возможно, не знаю, что такое differneces в двух разных строках, но имеет похожие значения на английском языке. –

+0

Учитывая, что я бы предложил механизм обработки текста, такой как Lucene, где вы могли бы вписаться в идеи, предложенные мной. И если вам придется использовать материал NLP для обозначения похожих или одинаковых слов смысла. Это тоже не просто :) – Karthikeyan

 Смежные вопросы

  • Нет связанных вопросов^_^