У меня есть следующий код, который проверяет, входят ли предложения в фрейм данных в список. Если это так, часть должна быть заменена на ''.Замена подобных предложений в data.frame
import pandas as pd
input_set = pd.DataFrame([['Thanks for the mail Harry', 1], ['Thanks for mailing Harry', 1]], columns=('Sentence', 'ticketID'))
def reduceString(string, listSentences):
for i in listSentences:
new_string = string.replace(i, '')
return(new_string)
listSentences = ['Thanks for the ']
for index, sentence in input_set.iterrows():
string = reduceString(sentence['Sentence'], listSentences)
print(string)
Все работает.
Однако, я хотел бы сделать его немного более надежным с включением модуля diff. Цель заключается в том, что не только точные предложения удаляются, но и предложения, которые похожи на x%.
Поэтому я попытался корректировки кода с этим:
import difflib
def reduceString2(string, listSentences):
for i in listSentences:
ratio = difflib.SequenceMatcher(None, i, string).ratio()
print(ratio)
if(ratio > 0.6):
new_string = string.replace(i, '')
return(new_string)
Однако, если я пытаюсь сейчас работает:
for index, sentence in input_set.iterrows():
string = reduceString2(df['Sentence'], listSentences)
Это не меняет второе предложение, пока действительно ударил барьер if-statement. Может ли кто-нибудь сказать, почему соответствующий текст не заменен?