diff --git a/CHANGELOG.md b/CHANGELOG.md index c8d24df..d74e64a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 3.8 +* change import path of utils in word2vec.py to local path +* expose vector fn + # 3.6 * Fix Bug: compare 保证交换两个句子后分数一致 [#60](https://github.com/huyingxi/Synonyms/issues/60) diff --git a/README.md b/README.md index f64dc51..32ec016 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,16 @@ synonyms.nearby(人脸) = ( 10. 运输机:0.720578 ``` +### synonyms#v +获得一个词语的向量,该向量为numpy的array,当该词语是未登录词时,抛出 KeyError异常。 + +``` +>>> synonyms.(v("飞机") +array([-2.412167 , 2.2628384 , -7.0214124 , 3.9381874 , 0.8219283 , + -3.2809453 , 3.8747153 , -5.217062 , -2.2786229 , -1.2572327 ], + dtype=float32) +``` + ## PCA 以“人脸”为例主要成分分析: diff --git a/VALUATION.md b/VALUATION.md index 46b00d8..dda1655 100644 --- a/VALUATION.md +++ b/VALUATION.md @@ -1,33 +1,33 @@ -# synonyms 分数评测 [(v3.3.9)](https://pypi.python.org/pypi/synonyms/3.3.9) +# synonyms 分数评测 [(v3.3.10)](https://pypi.python.org/pypi/synonyms/3.3.10) | 词1 | 词2 | synonyms | 人工评定 | | --- | --- | --- | --- | | 轿车 | 汽车 | 1.0 | 0.98 | -| 宝石 | 宝物 | 0.888 | 0.96 | +| 宝石 | 宝物 | 1.0 | 0.96 | | 旅游 | 游历 | 0.872 | 0.96 | | 男孩子 | 小伙子 | 1.0 | 0.94 | | 海岸 | 海滨 | 0.89 | 0.925 | -| 庇护所 | 精神病院 | 0.511 | 0.9025 | +| 庇护所 | 精神病院 | 0.587 | 0.9025 | | 魔术师 | 巫师 | 0.945 | 0.875 | | 中午 | 正午 | 0.899 | 0.855 | -| 火炉 | 炉灶 | 1.0 | 0.7775 | -| 食物 | 水果 | 0.805 | 0.77 | -| 鸟 | 公鸡 | 0.699 | 0.7625 | -| 鸟 | 鹤 | 0.618 | 0.7425 | +| 火炉 | 炉灶 | 0.895 | 0.7775 | +| 食物 | 水果 | 0.766 | 0.77 | +| 鸟 | 公鸡 | 0.279 | 0.7625 | +| 鸟 | 鹤 | 0.247 | 0.7425 | | 工具 | 器械 | 0.883 | 0.7375 | -| 兄弟 | 和尚 | 0.241 | 0.705 | -| 起重机 | 器械 | 0.485 | 0.42 | -| 小伙子 | 兄弟 | 0.463 | 0.415 | -| 旅行 | 轿车 | 0.172 | 0.29 | -| 和尚 | 圣贤 | 0.474 | 0.275 | +| 兄弟 | 和尚 | 0.096 | 0.705 | +| 起重机 | 器械 | 0.194 | 0.42 | +| 小伙子 | 兄弟 | 0.704 | 0.415 | +| 旅行 | 轿车 | 0.069 | 0.29 | +| 和尚 | 圣贤 | 0.19 | 0.275 | | 墓地 | 林地 | 0.872 | 0.2375 | -| 食物 | 公鸡 | 0.441 | 0.2225 | -| 海岸 | 丘陵 | 0.585 | 0.2175 | -| 森林 | 墓地 | 0.29 | 0.21 | -| 岸边 | 林地 | 0.501 | 0.1575 | -| 和尚 | 奴隶 | 0.117 | 0.1375 | -| 海岸 | 森林 | 0.488 | 0.105 | -| 小伙子 | 巫师 | 0.411 | 0.105 | -| 琴弦 | 微笑 | 0.112 | 0.0325 | -| 玻璃 | 魔术师 | 0.067 | 0.0275 | -| 中午 | 绳子 | 0.088 | 0.02 | -| 公鸡 | 航行 | 0.027 | 0.02 | +| 食物 | 公鸡 | 0.177 | 0.2225 | +| 海岸 | 丘陵 | 0.234 | 0.2175 | +| 森林 | 墓地 | 0.116 | 0.21 | +| 岸边 | 林地 | 0.2 | 0.1575 | +| 和尚 | 奴隶 | 0.047 | 0.1375 | +| 海岸 | 森林 | 0.195 | 0.105 | +| 小伙子 | 巫师 | 0.164 | 0.105 | +| 琴弦 | 微笑 | 0.045 | 0.0325 | +| 玻璃 | 魔术师 | 0.027 | 0.0275 | +| 中午 | 绳子 | 0.035 | 0.02 | +| 公鸡 | 航行 | 0.011 | 0.02 | diff --git a/demo.py b/demo.py index dbfd7ca..5ab4812 100755 --- a/demo.py +++ b/demo.py @@ -59,6 +59,12 @@ def test_wordseg(self): print("test_wordseg") print(synonyms.seg("中文近义词工具包")) + + def test_word_vector(self): + print("test_word_vector") + word = "三国" + print(word, "向量", synonyms.v(word)) + def test_diff(self): print("test_diff") result = [] diff --git a/setup.py b/setup.py index 703d691..d5d3469 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ setup( name='synonyms', - version='3.6.0', + version='3.7.0', description='Chinese Synonyms for Natural Language Processing and Understanding', long_description=LONGDOC, author='Hai Liang Wang, Hu Ying Xi', diff --git a/synonyms/synonyms.py b/synonyms/synonyms.py index 908d5ec..ae29e6f 100755 --- a/synonyms/synonyms.py +++ b/synonyms/synonyms.py @@ -206,6 +206,13 @@ def _levenshtein_distance(sentence1, sentence2): # print("smoothing[%s| %s]: %s -> %s" % (sentence1, sentence2, d, s)) return s +def v(word): + ''' + 获得一个词语的向量,OOV时抛出 KeyError 异常 + ''' + y_ = any2unicode(word).strip() + return _vectors.word_vec(y_) + def _nearby_levenshtein_distance(s1, s2): ''' 使用空间距离近的词汇优化编辑距离计算