中文分词

Posted xiaoxiaoqiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中文分词相关的知识,希望对你有一定的参考价值。

昨天产品提了个需求,用户搜索‘Q币充值’,只要包含‘Q币’的产品都要搜索出来,我们知道,通常情况搜索是把整个字符串进行模糊查询,这种需求应该怎么解决,我们来看看

 //首先引用两个DLL文件,再引用这三个命名空间,DLL文件底下会给链接

using Lucene.Net;

using Lucene.Net.Analysis;

using Lucene.China;

 

public ActionResult Index()

 {

    StringBuilder sb = new StringBuilder();

    sb.Remove(0, sb.Length);

    string t1 = "";

    int i = 0;

    Analyzer analyzer = new Lucene.China.ChineseAnalyzer();

    string rich = "Q币人外热发给34645……&*";

    StringReader sr = new StringReader(rich);

    TokenStream stream = analyzer.TokenStream(null, sr);

    

     long begin = System.DateTime.Now.Ticks;

     Token t = stream.Next();

     while (t != null)

      {

            t1 = t.ToString();   //显示格式: (关键词,0,2) ,需要处理

            t1 = t1.Replace("(", "");

            char[] separator = { ‘,‘ };

            t1 = t1.Split(separator)[0];

            sb.Append(i + ":" + t1 + " ");

            t = stream.Next();

             i++;

        }

        ViewBag.rich = rich;

        ViewBag.richSp = sb.ToString();

        long end = System.DateTime.Now.Ticks; //100毫微秒

        int time = (int)((end - begin) / 10000); //ms

        ViewBag.richTime = "耗时" + (time) + "ms ================================= ";

        return View();

   }

代码分析:

1、因无源码,词库文件只能放在指定的路径下
2、因无源码,大小写字母此处不区分,无法修正
3、不支持标点符号拆分

4、网上很大一部分的分词代码都是摘自飘易的博客,不如直接看他的。

      如果想要有源码的,网上也有一些大佬自己写的分词,几乎用不上这个功能也就没去验证

 

PS: dll文件下载地址 http://www.piaoyi.org/upimg/file071127_08/02/ChineseAnalyzer.rar

里面包含winform版的demon,摘自 http://www.piaoyi.org/c-sharp/ChineseAnalyzer.html



以上是关于中文分词的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch 中文分词器对比

中文分词概述及结巴分词原理

百度中文分词如何分词

lucene 中文分词?

分词器以及ik中文分词器

Python中文分词的原理你知道吗?