zoukankan      html  css  js  c++  java
  • 无词典分词

    看了互联网时代的社会语言学:基于SNS的文本数据挖掘

    blog地址:http://www.matrix67.com/blog/archives/5044

    全文思路

    1、介绍了无词典分词,且要考虑两个因素,一是内部凝固程度,二是外部自由程度

    2、举例说明,使用后缀数组,以O(nlogn)的时间复杂度来实现该算法

    3、介绍应用场景

    白话文

    1、不需要词典就把这句话给分了,有两个重点考核,一是排除那些是因为字偶然碰在一起形成的“词”,比如“的电影”;二是排除那些扩展性差的“词”,比如“辈子”

    2、暂时不涉及

    3、暂时不涉及

    我的体会

    抛开应用背景不讲,我关心的还是无词典分词,以下讲讲我的理解

    细节上讲,如何算该词的概率,或者说如何算该字的概率,是我的第一个问题,这个概率的分母是什么,比如,P(“电影”) = count(“电影”)/所有的词的个数?那P(“的”)又是什么呢?是等于count(“的”)/所有单个字的个数么?

    理解凝固程度和自由程度之后,若不接下来看的,我设计的算法会是这样子的,我会先得到每个可能的组合,比如对一个句读来说“我去电影院”:

    1、得到每一种可能组合,我就得到了“我去”、“去电”、“电影”、“影院”,“我去电”,“去电影”、“电影院”、“我去电影”、“去电影院”、“我去电影院”,之后首先判断这些组合出现的频率是不是大于我设的阈值,比如说“电影”、“电影院”、“去电影院”都大于我设的阈值,

    2、就下来就要判断内部凝固程度,以“电影院”为例,取P(“电影院”)/ (P(“电影”) * P(“院”))和P(“电影院”)/ (P(“电”) * P(“影院”))的较小值,我解释下为什么去较小值,首先,分子肯定是比分母大的,如果,分母和分子是在同一数量级的,甚至相等的话,那意味着这是这词凝固力不高,是可以拆分的,只要有一种拆分的可能,那就说凝固力不高。因此取较小值。这样就成功地剔除了一部分不符合要求的组合

    3、再来判断自由程度,这个在我算法就显得格外麻烦,因为这个要看这个词前面和后面的字的信息,才能算出信息熵,所以我得对我每个组合,去全文检索一篇,在算信息熵,看是不是大于我的阈值。

    文中举了一个例子,是采用后缀数组实现,效率比我想到的不知道高了多少。

    博文100篇,纪念一下,再接再厉。

  • 相关阅读:
    [Bootstrap]7天深入Bootstrap(4)CSS组件
    [Bootstrap]7天深入Bootstrap(3)CSS布局
    [Bootstrap]7天深入Bootstrap(2)整体架构
    [Bootstrap]7天深入Bootstrap(1)入门准备
    如何快速给自己博客增加10000推荐量
    [Test] 单元测试艺术(2) 打破依赖,使用模拟对象,桩对象,隔离框架
    C#如何使用ES
    异步tcp通信——APM.Server 消息推送服务的实现
    异步tcp通信——APM.ConsoleDemo
    异步tcp通信——APM.Core 解包
  • 原文地址:https://www.cnblogs.com/chuanlong/p/3087565.html
Copyright © 2011-2022 走看看