我在SO / elotherwhere上看到了很多类似的问题,但是没有一个答案能完全满足我的需求,所以我不认为这是一个重复。
此外,我完全知道自己如何实现此目的,但我试图不必重新发明轮子。
是否有人知道可以执行levenshtein /其他编辑距离的python软件包,它比较了2个单词列表(我发现了几个),但也允许其中一个指定您自己的插入,删除,替换和换位费用?
基本上,我希望计算的距离是对句子中单词的编辑次数,而不是对句子所不同的字符数。
我正在尝试使用python2的C api替换实际上是用C编写的自定义python扩展模块。我可以用纯python或cython重写,但我只想向项目添加一个依赖项。唯一的问题是,该代码允许您为各种选项指定您自己的费用,而到目前为止,我还没有找到一个允许这样做的软件包。
答案 0 :(得分:2)
NLTK具有名为edit_distance的功能。它计算两个琴弦之间的Levenshtein距离。但它也适用于字符串列表:
library(shiny)
library(highcharter)
data(fdeaths)
data(mdeaths)
ui <- fluidPage(
highchartOutput('f_plot'),
highchartOutput('m_plot')
)
server <- function(input, output, session) {
output$f_plot <- renderHighchart(
highchart(type = 'stock') %>%
hc_add_series(fdeaths) %>%
hc_xAxis(
events = list(
afterSetExtremes = JS("function(e) {
Highcharts.charts[0].xAxis[0].setExtremes(e.min, e.max);
}")
)
)
)
output$m_plot <- renderHighchart(
highchart(type = 'stock') %>%
hc_add_series(mdeaths) %>%
hc_xAxis(
events = list(
afterSetExtremes = JS("function(e) {
Highcharts.charts[1].xAxis[0].setExtremes(e.min, e.max);
}")
)
)
)
}
shinyApp(ui, server)
import nltk
s1 = 'WAKA WAKA QB WTF BBBQ WAKA LOREM IPSUM WAKA'.split()
s2 = 'WAKA OMFG QB WTF WAKA WAKA LOREM IPSUM WAKA'.split()
print(s1)
print(s2)
print(nltk.edit_distance(s1, s2))
答案 1 :(得分:0)
这是一个据说速度很快的库,可以计算各种类型的词距,包括 Levenshtein:
https://pypi.org/project/python-Levenshtein/
你还应该尝试汉明距离,比 Levenshtein 更少的内存和时间。