我有一个包含超过一百万个字符串的数据库表。每个字符串是一个术语,其长度可以从两个单词到五个或六个不等。在Python中识别数据库中的类似字符串
["big giant cars", "zebra videos", "hotels in rio de janeiro".......]
我也有一个在csv文件中的数千个小项的黑名单。我想要做的是在数据库中识别我的csv文件中列入黑名单的术语。在这种情况下的相似性可以被解释为黑名单术语的错误拼写。
我熟悉Python中的库,如fuzzywuzzy,它们可以使用Levensthein距离评估字符串相似度并返回相似度的整数表示。从本教程的一个例子是:
fuzz.ratio("NEW YORK METS", "NEW YORK MEATS") ⇒ 96
这种方法的缺点是,它可能会错误地识别,这可能意味着在不同的上下文的东西条款。
一个简单的例子就是“大屁股”,一个黑名单的字符串,与一个更加无辜的字符串混淆,比如“大但是”。
我的问题是,在python中是否可以通过编程来实现这一点,还是仅仅检索所有类似外观的关键字并过滤出误报会更容易?
是的,我想通过机器学习会走的路,但我一直在摸索着想弄明白。我开始了一个关于交叉验证的问题,询问同一个问题,看起来它会很困难。 http://stats.stackexchange.com/questions/199311/clustering-a-database-of-strings-based-on-their-similarity-to-a-seperate-set-of/199423?noredirect=1#comment378505_199423 – GreenGodot