У меня есть Pandas DataFrame, содержащий результаты настроения сущностей с использованием API естественного языка Google Cloud (https://cloud.google.com/natural-language/docs/analyzing-entity-sentiment).). Я настроил настроения сущностей на корпусе документов и хочу сравнить, как различные сущности рассматриваются в разных документах. Однако столбец entity_name содержит дубликаты из-за незначительных различий в способах ссылки на организации в различных документах. Я хотел бы заменить каждое имя объекта на одну версию, чтобы я мог сравнить анализ настроений по всем документам.
Вот пример того, как выглядит DataFrame:
entity_name paper_name score magnitude
Dept. of Commerce paper_1.pdf 0.67 0.13
Department of Commerce paper_2.pdf 0.42 0.21
US Department of Commerce paper_3.pdf 0.07 0.15
Я хотел бы найти, например, все ссылки на «Министерство торговли», чтобы я мог сравнить оценки настроений для этой сущности по различным документам. Это не большой DataFrame (менее 100 000 строк), поэтому самый быстрый / самый оптимальный ответ - не проблема.
Я пробовал нечеткое сопоставление имен, используя библиотеку нечеткого в Python. Я взял столбец entity_name и создал два отдельных массива Numpy, используя уникальные значения
names_1 = df.entity_name.unique()
names_2 = df.entity_name.unique()
Затем я провел нечеткое совпадение для всех пар в двух столбцах. Проблема в том, что у меня все еще есть дубликаты. Это пример того, как выглядит соответствующий DataFrame
name_1 name_2 match_ratio
Dept. of Commerce Department of Commerce 82
Department of Commerce Dept. of Commerce 82
US Department of Commerce Department of Commerce 100
Department of Commerce US Department of Commerce 100
Dept. of Commerce US Department of Commerce 82
US Department of Commerce Dept. of Commerce 82
Итак, в общем, я ищу способ заменить все варианты «Министерства торговли» одной версией (не имеет значения, какая), чтобы я мог сравнивать оценки настроений в разных статьях. Я нашел решения, которые включают объединение двух DataFrames с нечетким сопоставлением и другие, которые включают нечеткое сопоставление двух отдельных столбцов в одном DataFrame, но до сих пор не нашли способа нормализовать один столбец String в DataFrame.