我有一个Pandas DataFrame,其中包含使用Google Cloud的自然语言API(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(少于10万行),因此最快/最理想的答案就不用担心了。
我尝试使用Python中的Fuzzywuzzy库对名称进行模糊匹配。我使用 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
因此,总而言之,我正在寻找一种用一个版本(无论哪个版本)替换“商务部”所有变体的方法,因此我可以比较各篇论文的情感评分。我已经找到了解决方案,其中涉及将两个DataFrame进行模糊匹配合并,而其他解决方案则涉及对同一DataFrame中的两个独立列进行模糊匹配,但是到目前为止,还没有找到一种标准化DataFrame中单个String列的方法。