Python string_grouper 中的 match_most_similar 返回原始字符串

如何解决Python string_grouper 中的 match_most_similar 返回原始字符串

我有一个混乱的字符串列表,我想从格式清晰的字符串列表中找到每个字符串的最佳匹配,其中还包含有关每个字符串的元数据。混乱列表中的字符串在列表中随机重复(通常使用字符串的替代拼写)。杂乱字符串的列表太长,以致于通过 fuzzywuzzy 循环是不可行的。

我一直在尝试使用 match_most_similar 库中的 string_grouper。当我使用此代码应用该函数时:

import pandas as pd
import numpy as np
from string_grouper import match_strings,match_most_similar,group_similar_strings,StringGrouper
new_strings = pd.Series(df['Cited'])
# Create all matches:
matches = match_most_similar(data['caseName'],new_strings)

# display the results:
pd.DataFrame({'new_strings': new_strings,'duplicates': matches})

match_most_similar 函数返回原始字符串,而不是它们从干净列表中的匹配项。 (data['caseName'] 是干净的字符串列表。)这是输出duplicates 中出现的所有内容都不是来自 data['caseName']

pd.DataFrame({'new_strings': new_strings,'duplicates': matches})
                                  new_strings                                    duplicates
0  Ashwander v. Tennessee Valley Authority,.txt  Ashwander v. Tennessee Valley Authority,.txt
1                             Bell v. Hood,.txt                             Bell v. Hood,.txt
2    Charles River Bridge v. Warren Bridge,.txt    Charles River Bridge v. Warren Bridge,.txt

有人知道我做错了什么吗?

作为参考,new_strings 看起来像这样(我将其限制为帖子的 3 个元素):

0    Ashwander v. Tennessee Valley Authority,.txt
1                               Bell v. Hood,.txt
2      Charles River Bridge v. Warren Bridge,.txt
Name: Cited,dtype: object

data['caseName'] 看起来像这样:

data['caseName']
0       HALLIBURTON OIL WELL CEMENTING CO. v. WALKER e...
1                              CLEVELAND v. UNITED STATES
2           CHAMPLIN REFINING CO. v. UNITED STATES ET AL.
3        UNITED STATES v. ALCEA BAND OF TILLAMOOKS ET AL.
4              UNITED STATES v. HOWARD P. FOLEY CO.,INC.
                              ...                        
9025     DEPARTMENT OF HOMELAND Security v. THURAISSIGIAM
9026    SEILA LAW LLC v. CONSUMER FINANCIAL PROTECTION...
9027            LIU v. SECURITIES AND EXCHANGE COMMISSION
9028                      COLORADO DEPT. OF STATE v. BACA
9029                             TRUMP v. MAZARS USA,LLP
Name: caseName,Length: 9030,dtype: object```

解决方法

我是 string_grouper 的投稿人,很抱歉我没有早点注意到您的问题。

match_most_similar 返回原始字符串,如果它在相似性阈值 (min_similarity) 上找不到匹配项,默认值为 0.8。所以你可以尝试降低它的值,看看你是否得到更合适的结果。例如,

matches = match_most_similar(data['caseName'],new_strings,min_similarity=0.6)

请记住,min_similarity 的最低值为 0,最高为 1。此外,通常情况下,相似性阈值越低,match_most_similar 的运行时间就越长。

>

另请参阅 https://github.com/Bergvca/string_grouper#kwargs 以获取您可以调整以改善结果的其他选项列表。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?