使用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限制C++代码访问JNI中的某些类   Android上的java DateFormat:不可解析的日期   通过json进行java迭代,并为其他请求调用多个API   Netbeans中的java JavaFX项目引发异常“输入流不能为null”   多线程Java newFixedThreadPool解释   |在java字符串中无法识别。split()方法   Java中的原始包装器类是否被视为引用类型?   Java swing。如何在intellij idea GUI设计工具中重写组件方法   数组乘矩阵   java将30GB的XML文件分割成小块XML   java通过一棵树递归找到一个节点,并返回指向该节点的路径   java如何将可观察的<Observable<List<T>>转换为可观察的<List<T>>   使用java在web服务器上更改php文件中的字符串?   java希望开发像tomcat这样的servlet容器   java希望提高编程的数学技能