zoukankan      html  css  js  c++  java
  • word collocations中文版(信息检索)

    虽然说是大作业,也做了好几天,但是完全没有什么实际价值...就是把现有的东西东拼西凑一下,发现跑的特别慢还搞了个多核

    写这篇blog纯属是我吃饱了没事干,记录一下装env的蛋疼

    首先我们是在python下进行的,虽然python本身有点慢,而且多线程8太行,但是架不住他在处理dictionary的时候简单

    同时我们需要的库有lucene(建立索引),pyltp(依存句法粉细),wx(画一个很丑的GUI界面,作业要求的)

    我惊奇的发现,只有python3.6才能满足这三个库同时存在...

    配置环境:我在阿里云上用竞价方式买了一个计算性ecs.ic5.3xlarge,12核12GB,虽然看起来很贵,但是实际竞价的话一天也就10多块钱(结果硬盘比机器贵...)

    首先在tuna源上下载anaconda3-5.2,bash安装

    更新pip以后就可以直接pip install pyltp了,但是pyltp还有模型数据要单独下载,百度一下就好了

    接下来下载pylucene-8.1.1,解压以后按照网上的步骤安装到python里面

    最后 conda install wxpython=4.0.4=py36hc99224d_0 安装wxpython,不指定build的话anaconda自动给升级成python3.7就爆了....

    到此环境终于搞定了

    首先word collocation,也就是常用词搭配,可以用一句话来解释:“元芳 你 怎么 看”

    显然“元芳”,”你“,“怎”么都是修饰看的,也就是说虽然”元芳“和“你”在同一句话里面,而且甚至连在一起,但是他们之间其实是没有什么“搭配”的关系的

    这时候可以用到一个叫做依存句法分析的东西,也就是可以把一句话里每个词修饰的到底是另外哪一个词给找出来,这样我们就可以得到一句话里的所有“词语搭配”了

    这个东西并不需要我来写,使用哈工大写的极烂但是仅此一家的LTP工具可以简单地分析一下,但是有一说一,确实很慢

    现在查询一个词“服务”和它搭配最多的词,我们只要找到所有包含“服务”的句子,然后把这些句子给用ltp分析一下,这样就能找到所有修饰“服务”的词了

    我们再把它们统计一下个数,出现越多的说明这种搭配越常见,于是就完事了

    但是我们发现实际上运算速度非常的慢,因为需要在线依存句法分析,一分钟大约只能处理10000条句子

    所以我又使用了python里的mulitprocessing,用满了所有的12个核心,这样子速度大概提升了10倍左右(因为有大量内存拷贝,占用了很多时间)

    同时因为我要在两个process里传递dictionary,然而我经过查找发现mulitprocessing.Queue的大小只有65536Byte(大概),所以我只能传递词典的前150个词左右回去,剩下的词出现次数也并不多,所以去掉了也没有关系,最终结果如下:

    暂时先写到这里,有空再补

  • 相关阅读:
    为同一个元素绑定多个不同的事件,并指向相同的事件处理函数方法
    js获取/设置任意元素中间内容的兼容方法
    js元素事件绑定与解绑兼容代码
    js元素事件的绑定与解绑,绑定事件的区别
    【TFS 2017 CI/CD系列
    【TFS 2017 CI/CD系列
    【TFS 2017 CI/CD系列
    【OPPO主题制作系列
    【SQL Server 学习系列】-- ConnectionTimeout、CommandTimeout和BulkCopyTimeout
    【.Net 学习系列】-- Windows身份模拟(WindowsIdentity.Impersonate)时读取Access数据库
  • 原文地址:https://www.cnblogs.com/rausen/p/12047796.html
Copyright © 2011-2022 走看看