中文分词

Asp.net / C# 中利用SCWS中文分词

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-19 17:30:53
中文分词太麻烦了,也有些中文分词组件也不错,但要自己维护词库,我还是觉得麻烦,我尝试用SCWS中文分词,直接调用他的 api ,我什么都不需要做了,在此感谢一下。 废话不多说了,直接上菜。 1 /// <summary> 2 /// 利用SCWS进行中文分词 3 /// 1638988@gmail.com 4 /// </summary> 5 /// <param name="str"> 需要分词的字符串 </param> 6 /// <returns> 用空格分开的分词结果 </returns> 7 public static string Segment( string str) 8 { 9 System.Text.StringBuilder sb = new System.Text.StringBuilder(); 10 try 11 { 12 string s = string .Empty; 13 System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer(); 14 // 将提交的字符串数据转换成字节数组 15 byte [] postData = System.Text.Encoding.ASCII.GetBytes( " data= " + System.Web

php+中文分词scws+sphinx+mysql打造千万级数据全文搜索

纵然是瞬间 提交于 2020-03-15 11:36:55
Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。 Sphinx创建索引的速度为:创建100万条记录的索引只需3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。 Sphinx的特性如下: a) 高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒); b) 高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒); c) 可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可处理100 M 文档); d) 提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法; e) 支持分布式搜索; f) 支持短语搜索 g) 提供文档摘要生成 h) 可作为MySQL的存储引擎提供搜索服务; i) 支持布尔、短语、词语相似度等多种检索模式; j) 文档支持多个全文检索字段(最大不超过32个); k) 文档支持多个额外的属性信息(例如:分组信息,时间戳等); l) 支持断词;

搭建中文分词工具

夙愿已清 提交于 2020-03-10 03:33:03
一、递归的方法 import xlrd import math dw = xlrd . open_workbook ( '中文词库.xlsx' ) dic_words = [ ] rows = dw . sheet_by_index ( 0 ) . get_rows ( ) for row in rows : dic_words . append ( row [ 0 ] . value ) print ( dic_words ) # 以下是每一个单词出现的概率。为了问题的简化,我们只列出了一小部分单词的概率。 在这里没有出现的的单词但是出现在词典里的,统一把概率设置成为0.00001 # 比如 p("学院")=p("概率")=...0.00001 word_prob = { "北京" : 0.03 , "的" : 0.08 , "天" : 0.005 , "气" : 0.005 , "天气" : 0.06 , "真" : 0.04 , "好" : 0.05 , "真好" : 0.04 , "啊" : 0.01 , "真好啊" : 0.02 , "今" : 0.01 , "今天" : 0.07 , "课程" : 0.06 , "内容" : 0.06 , "有" : 0.05 , "很" : 0.03 , "很有" : 0.04 , "意思" : 0.06 , "有意思" : 0

各分词工具对比 jieba、pkuseg、thulac、nlpir、基于BI-LSTM+ CRF自训练

為{幸葍}努か 提交于 2020-03-10 00:17:26
jieba 主要接口 cut https://github.com/fxsjy/jieba 默认精准切词,尽量保留长词 cut_all模式,在精准模式下增加一些短词 cut_for_search 切出尽量多的词用于搜索 特性 日常切词效果最好,比如三个字的动词一般会比较全,“打不开”,“扫一扫”,如何实现的,目前未知? 但多个字的名词会容易切掉,可能主要原因是语料较老,主要是1998人民日报 算是目前实用性较高的工具 目前最有效的方法就是将清华的高质量词库以及自己整理的专有词库导入jieba jieba与其他最大的区别是,jieba以预先整理的词库为优先,尽量匹配最长的词。而其他是通过模型预测BMES,再分词 pkuseg 特性 主要基于人民日报,三个字的动词或形容词会容易切断,比如“打不开”,“好得多” https://github.com/lancopku/PKUSeg-python thulac 特性 与pkuseg效果基本差不多,主要基于人民日报 https://github.com/thunlp/THULAC-Python nlpir 特性 与pkuseg效果基本差不多,主要基于人民日报 BI-LSTM + CRF 特性 与pkuseg效果基本差不多,主要基于2014人民日报 偶尔还能比前三个更好,比如“门禁卡号” https://github.com

自定义中文分词

て烟熏妆下的殇ゞ 提交于 2020-03-08 13:28:55
分词 常用的分词方法有: 基于规则的分词:正向匹配、逆向匹配、双向匹配 基于统计的分词:基于语言模型、基于序列模型 混合分词:综合多种分词 基于规则的分词 基于规则的分词是通过维护字典的方法,在切分语句时将语句中的字符与词典进行逐一匹配去划分词语,是一种比较机械的分词方式 my_dict = ["江大桥", "研究", "生命科学", "南京市", "研究生", "大桥", "科学", "课题", "南京市长", "生命", "长江大桥", "南京", "市长"] max_length = max([len(word) for word in my_dict]) 前向匹配 MM (maximum match) def word_cut_mm(sentence): """正向匹配""" sentence = sentence.strip() word_length = len(sentence) cut_word_list = [] while word_length > 0: max_cut_length = min(max_length, word_length) sub_sentence = sentence[:max_cut_length] while max_cut_length > 0: if sub_sentence in my_dict or max_cut

python jieba分词小说与词频统计

人走茶凉 提交于 2020-03-07 10:07:23
1、知识点 """ 1)cut() a) codecs.open() 解决编码问题 b) f.readline() 读取一行,也可以使用f.readlines()读取多行 c) words =" ".join(jieba.cut(line))分词,每个词用空格分隔 2)lcut() 返回一个list列表 """ 2、标点符号处理,并分词,存储到文件中 def fenCi(): """ 标点符号处理,并分词,存储到文件中 :return: """ f = codecs.open("深渊主宰系统.txt",'r',encoding='utf-8') f1 = open("seg.txt",'w',encoding='utf-8') line = f.readline() while line: line = line.strip(' ') words =" ".join(jieba.cut(line)) words = words.replace(",","").replace("!","").replace("“","")\ .replace("”","").replace("。","").replace("?","").replace(":","")\ .replace("...","").replace("、","").strip(' ') print(len(words))

传智播客课程——Lucene搜索引擎

孤街浪徒 提交于 2020-03-06 09:35:08
Lucene不是一个现成的程序,类似文件搜索程序或web网络爬行器或是一个网站的搜索引擎。Lucene是一个软件库,一个开发工具包,而不是一个具有完整特征的搜索应用程序。它本身只关注文本的索引和搜索。Lucene使你可以为你的应用程序添加索引和搜索能力。目前已经有很多应用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的帮助系统的搜索功能。 Lucene 采用的是一种称为反向索引(inverted index)的机制。反向索引就是说我们维护了一个词/短语表,对于这个表中的每个词/短语,都有一个链表描述了有哪些文档包含了这个词/短语。这样在用户输入查询条件的时候,就能非常快的得到搜索结果。 文档建立好索引后,就可以在这些索引上面进行搜索了。搜索引擎首先会对搜索的关键词进行解析,然后再在建立好的索引上面进行查找,最终返回和用户输入的关键词相关联的文档。 今天在传智播客的课堂上,汤阳光老师教我们实现了简单的Lucene搜索引擎,使我们能够对大量的文档实现不同需求的查找。以下是我的总结。 1. 准备环境:添加jar包 lucene-core-2.4.0.jar(核心); lucene-analyzers-2.4.0.jar(分词器); lucene-highlighter-2.4.0.jar(高亮器); 2. 构造IndexWriter

开源免费的简易中文分词系统SCWS – PHP版

匆匆过客 提交于 2020-03-05 08:09:00
SCWS 是 Simple Chinese Words Segmentation 的缩写,即简易中文分词系统。官网: http://www.xunsearch.com/scws 这是一套基于词频词典的机械中文分词引擎,它能将一整段的汉字基本正确的切分成词。词是汉语的基本语素单位,而书写的时候不像英语会在词 之间用空格分开,所以如何准确而又快速的分词一直是中文分词的攻关难点。 SCWS 在概念上并无创新成分,采用的是自行采集的词频词典,并辅以一定程度上的专有名称、人名、地名、数字年代等规则集,经小范围测试大概准确率在 90% ~ 95% 之间,已能基本满足一些中小型搜索引擎、关键字提取等场合运用。 SCWS 采用纯 C 代码开发,以 Unix-Like OS 为主要平台环境,提供共享函数库,方便植入各种现有软件系统。此外它支持 GBK,UTF-8,BIG5 等汉字编码,切词效率高。 [推荐]首个搭载 SCWS 分词系统的中小型站内全文检索解决方案 - FTPHP! 以下为本人在win03平台下,php5.2.5+apache2.2.11平台下推荐的方法,特别的简单,用的是gbk的字库的 1.首先从 http://www.ftphp.com/scws/download.php 下载相关压缩包 . php_scws.dll (1.1.1) php_scws.dll 是由 ben 移植用于

Lucene系列四:Lucene提供的分词器、IKAnalyze中文分词器集成、扩展 IKAnalyzer的停用词和新词

こ雲淡風輕ζ 提交于 2020-03-05 07:01:32
一、Lucene提供的分词器StandardAnalyzer和SmartChineseAnalyzer 1.新建一个测试Lucene提供的分词器的maven项目LuceneAnalyzer 2. 在pom.xml里面引入如下依赖 <!-- lucene 核心模块 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>7.3.0</version> </dependency> <!-- Lucene提供的中文分词器模块,lucene-analyzers-smartcn:Lucene 的中文分词器 SmartChineseAnalyzer --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers-smartcn</artifactId> <version>7.3.0</version> </dependency> 3. 新建一个标准分词器StandardAnalyzer的测试类LuceneStandardAnalyzerTest package com.luceneanalyzer.use.standardanalyzer;

MySQL中文索引插件mysqlcft安装及使用

那年仲夏 提交于 2020-03-02 05:47:43
MySQL中文索引插件mysqlcft安装及使用 1. MySQL 必须是动态编译安装的,以便加载动态链接库。 2. 编辑 MySQL 配置文件 my.cnf ,在 [mysqld] 段中加入 ft_min_word_len=1 (意为最小词所占字节数) 3. 安装 mysqlcft 中文全文索引插件 从命令行登入 MySQL 服务器 查看 MySQL 插件目录 Show variables like ‘plugin_dir’; 下载 mysqlcft 中文索引插件,解压后复制 mysqlcft.so 文件到 MySQL 的插件目录下 https://code.google.com/p/mysqlcft 有 32 位与 64 位可选 开始安装 mysqlcft.so 插件 Install plugin mysqlcft soname ‘mysqlcft.so’; 查看 mysqlcft.so 插件是否安装成功 show plugins; 4. 卸载 mysqlcft.so 插件,卸载前请先删除使用 mysqlcft 建立的全文索引。 uninstall plugin mysqlcft; 5. 为已经存在的表添加 mysqlcft 中文全文索引 创建单列全文索引 alter ignore table 数据库名 . 表名 add fulltext index 全文索引名 ( 字段名 )