Ainvain
@Ainvain

Pandas: как сделать консолидацию по похожим строкам?

Есть таблица с колонками Phrase, count, где Phrase - строка текста, а count - количество чётких совпадений в другом массиве (число).
Нужно, используя какую-либо пригодную для этой задачи функцию сравнения текста, выделить группы похожих значений Phrase (Что, что, ЧТо?, Што??? и т.п.), объединить в одну строку, где Phrase - значение записи с наибольшим count среди группы, а в count - сумма count всей группы.

То есть есть, к примеру, таблица:


Phrase count
Что 10
Что? 24
Чта 2
Что?? 5
ЧТО??? 10
Как 20
КаК 2
Как? 37
Как?? 5
Как??? 7

Желаемый результат:
Phrase count
Что? 51
Как? 71
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
@o5a
df.groupby(df['Phrase'].str.lower().str.extract(r"(\w+)", expand=False)).sum()

Подобным образом можно объединить, игнорируя регистр и всякие знаки (т.е. в предложенном примере разделит на 3 группы).
Но чтобы программа поняла, что "что" и "чта" в одной группе, надо будет добавить или словарь со всеми "синонимами" слов или применять что-нибудь типа nltk (но вроде он тоже "чта" не поймет как "что").
Если же в реальности там именно целые предложения, то тогда без nltk скорее всего не обойтись, но и он однозначно тоже не сможет понять эти "чта" скорее всего.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы