使用pmi和svd将单词转换为向量的库

svd2vec的Python项目详细描述


#SVD2vec

svd2vec是一个python库,用于将文档单词表示为向量。向量是使用pmi(逐点互信息)和svd(奇异值分解)创建的。

这个库实现了“通过从单词嵌入中吸取的经验改进分布相似性”中的建议(omer levy、yoav goldberg和ido dagan)。本文认为,传统的pmi和svd方法通过应用相同的超参数可以达到word2vec的效果。

文档可在[https://valentinp72.github.io/svd2vec/index.html](https://valentinp72.github.io/svd2vec/index.html)找到

###示例

`shell wget http://mattmahoney.net/dc/text8.zip-O text8.gz gzip -d text8.gz -f `

`python # Building >>> from svd2vec import svd2vec >>> documents = [open("text8","r").read().split(" ")] >>> svd = svd2vec(documents, window=2, min_count=100) `

`python # I/O >>> svd.save("svd.bin") >>> svd = svd2vec.load("svd.bin") `

`python # Similarities >>> svd.similarity("bad", "good") # 0.4156516999158368 >>> svd.similarity("monday", "friday") # 0.839529117681973 `

`python # Most similar words >>> svd.most_similar(positive=["january"], topn=2) # [('february', 0.6854849518368631), ('october', 0.6653385092683669)] >>> svd.most_similar(positive=['moscow','france'],negative=['paris'], topn=4) # [('russia', 0.6221746629754187), ('ussr', 0.6024809889985986), ('soviet', 0.5794180517326273), ('bolsheviks', 0.5365123080505297)] `

`python # Analogies >>> svd.analogy("paris", "france", "berlin") # [('germany', 0.6977716641680641), ...] >>> svd.analogy("road", "cars", "rail") # [('trains', 0.7532519174901262), ...] >>> svd.analogy("cow", "cows", "pig") # [('pigs', 0.6944101149919422), ...] >>> svd.analogy("man", "men", "woman") # [('women', 0.7471792753875327), ...] `

使用[gensim](https://pypi.org/project/gensim/)可以使用word2vec表示加载svd2vec模型: `python >>> from gensim.models.keyedvectors import Word2VecKeyedVectors >>> svd.save_word2vec_format("svd_word2vec_format.txt") >>> keyed_vector = Word2VecKeyedVectors.load_word2vec_format("svd_word2vec_format.txt") >>> keyed_vector.similarity("good", "bad") # 0.54922897 `

-

[根据单词嵌入的经验提高分布相似性](https://www.mitpressjournals.org/doi/abs/10.1162/tacl_a_00134)<;br>; omer levyyoav goldberg,和ido dagan<;br>; 计算语言学协会学报2015年第3卷,211-225<;br>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Rest DSL路由无法启动路由,因为同一端点不允许有多个使用者   jvm有没有像JConsole或VisualVM这样的工具可以告诉我“类、对象、引用变量在java中存储在哪里?”   java为什么我的列表中的所有元素看起来都一样?   java运行时。运行shell脚本的exec无法打开文件   JPopupMenu的JMenuItem的java热键   会话在Java中被覆盖   如何在java中去除字符串中的尖锐重音?   java Mockito监视一个接口,模拟它的默认方法,获取NullPointerException   javascript如何在jquery中禁用同一时间选择   将数组列表附加到现有CSV文件,但它会附加并清除存储在Java文件中的以前的数据   java从我的jar中访问pdf文件   java Sonar issue参数必须为非Null,但标记为可为Null   java Salesforce流式API:在网络故障之后和重新订阅之前获取事件   在Java 1.8.0_65上运行Play2.0应用程序时出现playframework错误   java为什么字母的ASCII由方法自动转换。toCharArray()?   java如何知道JDialog是否关闭?   java向服务器发送POST请求,服务器的响应为null,启动   java如何设置JTable中特定单元格的值?   ImagePlus中的java保存问题