首页 / 算法 / python-查找短语共现矩阵的有效算法
python-查找短语共现矩阵的有效算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-查找短语共现矩阵的有效算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1266字,纯文字阅读大概需要2分钟。
内容图文
![python-查找短语共现矩阵的有效算法](/upload/InfoBanner/zyjiaocheng/677/79ef10a6ba75432eac32557aeab25519.jpg)
我的清单L大约有40,000个词组,文档大约有1000万个单词.我要检查的是这四个短语中的哪两个在4个单词的窗口内出现.例如,考虑L = [“棕狐”,“懒狗”].该文档中包含“一只快速的棕色狐狸跳过懒狗”的字样.我想看看,在四个字的窗口中出现了几次狐狸和懒狗,并将其存储在文件中.我有以下代码可以做到这一点:
content=open("d.txt","r").read().replace("\n"," ");
for i in range(len(L)):
for j in range(i+1,len(L)):
wr=L[i]+"\W+(?:\w+\W+){1,4}"+L[j]
wrev=L[j]+"\W+(?:\w+\W+){1,4}"+L[i]
phrasecoccur=len(re.findall(wr, content))+len(re.findall(wrev,content))
if (phrasecoccur>0):
f.write(L[i]+", "+L[j]+", "+str(phrasecoccur)+"\n")
本质上,对于列表L中的每对短语,我正在检查文档内容中这些短语在4个单词的窗口中出现了多少次.但是,当列表L很大(例如40K个元素)时,此方法的计算效率较低.有更好的方法吗?
解决方法:
您可以使用类似于Aho-Corasick string matching algorithm的东西.从短语列表中构建状态机.然后开始将单词输入状态机.每当发生匹配时,状态机都会告诉您匹配的短语和单词编号.因此,您的输出将类似于:
"brown fox", 3
"lazy dog", 8
etc.
您可以捕获所有输出并对其进行后处理,也可以在找到匹配项时对其进行处理.
构建状态机需要花费一些时间(40,000个短语需要几秒钟),但是在此之后,输入令牌的数量,短语的数量和匹配数是线性的.
我使用了类似的方法,将5000万个YouTube视频标题与MusicBrainz数据库中的几百万首歌曲标题和歌手姓名匹配.很棒.而且非常快.
内容总结
以上是互联网集市为您收集整理的python-查找短语共现矩阵的有效算法全部内容,希望文章能够帮你解决python-查找短语共现矩阵的有效算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。