Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sfewfsaf
Synonyms
提交
de23685f
S
Synonyms
项目概览
sfewfsaf
/
Synonyms
与 Fork 源项目一致
从无法访问的项目Fork
通知
6
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Synonyms
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
de23685f
编写于
11月 14, 2017
作者:
H
Hain Wang
提交者:
GitHub
11月 14, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #15 from bobbercheng/patch-1
Update __init__.py
上级
902fd838
cdb85530
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
2 deletion
+26
-2
synonyms/__init__.py
synonyms/__init__.py
+26
-2
未找到文件。
synonyms/__init__.py
浏览文件 @
de23685f
...
...
@@ -185,6 +185,30 @@ def _unigram_overlap(sentence1, sentence2):
return
((
float
)(
len
(
intersection
))
/
(
float
)(
len
(
union
)))
def
_levenshtein_distance
(
sentence1
,
sentence2
):
'''
Return the Levenshtein distance between two strings.
Based on:
http://rosettacode.org/wiki/Levenshtein_distance#Python
'''
first
=
sentence1
.
split
()
second
=
sentence2
.
split
()
if
len
(
first
)
>
len
(
second
):
first
,
second
=
second
,
first
distances
=
range
(
len
(
first
)
+
1
)
for
index2
,
char2
in
enumerate
(
second
):
new_distances
=
[
index2
+
1
]
for
index1
,
char1
in
enumerate
(
first
):
if
char1
==
char2
:
new_distances
.
append
(
distances
[
index1
])
else
:
new_distances
.
append
(
1
+
min
((
distances
[
index1
],
distances
[
index1
+
1
],
new_distances
[
-
1
])))
distances
=
new_distances
levenshtein
=
distances
[
-
1
]
return
2
**
(
-
1
*
levenshtein
)
def
_similarity_distance
(
s1
,
s2
):
'''
...
...
@@ -194,9 +218,9 @@ def _similarity_distance(s1, s2):
b
=
_sim_molecule
(
_get_wv
(
s2
))
# https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.norm.html
g
=
1
/
(
np
.
linalg
.
norm
(
a
-
b
)
+
1
)
u
=
_
unigram_overlap
(
s1
,
s2
)
u
=
_
levenshtein_distance
(
s1
,
s2
)
r
=
g
*
1.4
+
u
*
0.2
r
=
min
((
r
*
10
+
0.1
)
,
1.0
)
r
=
min
((
r
*
10
+
0.1
),
1.0
)
return
float
(
"%.3f"
%
r
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录