CN107451122B - 一种基于Lucene的动态n元分词方法 - Google Patents
一种基于Lucene的动态n元分词方法 Download PDFInfo
- Publication number
- CN107451122B CN107451122B CN201710674957.8A CN201710674957A CN107451122B CN 107451122 B CN107451122 B CN 107451122B CN 201710674957 A CN201710674957 A CN 201710674957A CN 107451122 B CN107451122 B CN 107451122B
- Authority
- CN
- China
- Prior art keywords
- word
- character
- word segmentation
- stop
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/284—Lexical analysis, e.g. tokenisation or collocates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Machine Translation (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明涉及互联网大数据领域,尤其涉及一种基于Lucene的动态n元分词方法。包括1)设置停用词;2)指定不同字符集;3)预处理;4)指定不同字符集的分词颗粒度n;5)分词。本发明通过一种基于Lucene的动态n元分词方法,可将拥有不同字符集的机器数据,动态设置n的值。当词表过于庞大时,可将n的值变大。由于本发明可以设置不同的字符集,例如中文字符集,字母字符集,数字字符集,韩文字符集,日文字符集等,那么可以兼容多种不同国家的语言的分词,解决了Lucene自带分词器和第三方中文分词器中语言不够兼容的缺陷。
Description
技术领域
本发明涉及互联网大数据领域,尤其涉及一种基于Lucene的动态n元分词方法。
背景技术
现在大数据领域中增长最快,内容最复杂,也最具有价值的一类数据是机器数据,该数据已将占据大数据领域中的90%。目前的分词器对该类数据的处理存在较多问题,如分词后词表太长,查询时间长。
目前Lucene自带的分词器,例如Standard Analyzer标准分词器,根据空格和符号来完成分词;Whitespace Analyzer空格分词器,使用空格作为间隔符的词汇分割分词器;Simple Analyzer简单分词器,具备基本西方字符词汇的分词器等其他分词器,对英文来说是非常适合的,把单词切分成一个一个词根,但是对于中文来说只是简单把中文分成一个一个汉字,那么以上Lucene自带分词器的技术,相对于中文分词来说就显得相形见绌了,因为它无法满足中文,当然也包括一些其他国家的语言,如日文,韩文等分词需求。
现在也出现一些第三方中文分器,例如:IK Analyzer IK分词器以词典为基础的正反向全切分,以及正反向最大匹配切分的两种方法,是一个很好的中文分词器,但是由于其具有庞大的词典库,导致分词的速度变慢。再比如MMSeg4J分词器,使用Chih-Hao Tsai的MMSeg算法(基于正向最大匹配切分方法),对于内存的消耗较大,分词速度也不近人意。其他的第三方分词器,如Binary Analyzer 二元分词器,将词汇进行交叉双字分割,以实现分词效果,但是无法根据不同语言(不同字符集)动态改变分割词的个数,即无法动态改变n的值。
综上所述,Lucene自带的分词器无法兼顾中文的分词,而第三方的中文分词器,分词速度慢,也无法兼顾其他语言(韩文,日文等)的分词。
另一方面,对于机器数据(目前大数据领域中增长最快,内容最复杂,也最具有价值的一类数据)的分词效果也差强人意,分词后的词表非常庞大,导致查询速度慢。
可见,现有技术中对于词汇的分词受限于语言(多种字符集),分词速度,查询速度和数据类型(机器数据)。
发明内容
本发明的目的是针对上述不足之处提供一种基于Lucene的动态n元分词方法,采用基于Lucene的动态n元分词的方法,在多语言(多字符集),多种数据类型(机器数据)的情况下,可以实现多种语言多种数据类型词汇的动态n元分词,达到分词速度快,查询速度快,可动态修改n值,支持模糊查询,词表短的效果。
本发明是采取以下技术方案实现的:
一种基于Lucene的动态n元分词方法,包括以下步骤:
1)设置停用词,
所述停用词的含义为,不进行分词的词,读到该词直接跳过忽略,即不建立索引的词;
2)指定不同字符集,
所述不同字符集是需要进行分词的词,即要建立索引的词,也即用户将查询的词;该字符集根据用户需求来指定;
3)预处理,
将需要进行分词的文档内容,进行以下处理,即将所有的英文大写字母转换成小写字母进行存储,建立索引;将所有全角的字符转换为半角字符进行存储,建立索引;将所有的中文繁体字转化为中文简体进行存储,建立索引;
4)指定不同字符集的分词颗粒度n,
对步骤2)中指定的字符集指定不同的分词方式,即设置分词的颗粒度n;
5)分词,
5-1)逐字读取文件内容,判断读取内容是否为空;如果读取内容为空就直接结束本步骤;不为空,进入下一步;
5-2)判断是否是停用词,如果是停用词,直接跳过,从该停用词后面的内容开始,进入步骤5-1)读取文件内容;如果不是停用词,进入下一步;
5-3)判断步骤5-2)中读取字符的字符类型,根据字符类型和步骤4)中预设的颗粒度进行循环读取词汇,直到下一个字符的字符类型不为步骤5-2)中读取字符的字符类型或者是停用词;
5-4)将步骤5-3)中读取到的字符串根据相应的颗粒度进行分词,建立索引;
5-5)回到步骤5-1),直到读取字符为空,即文件内容读完,结束分词。
步骤1)中所述的停用词包括但不限于常见标点符号、空格或换行符等,常见标点符号包括逗号、冒号、句号等;当需要对标点符号进行分词,建立索引时,停用词不能为标点符号;停用词能够根据需求设定。
步骤2)所述的字符集包括但不限于中文字符集、日文字符集、英文字符集和数字字符集,没有被指定的字符和特殊的图形符号作为特殊字符集,没指定的字符包括印度语的字符集。
步骤2)中指定的字符集的数量没有限制,用户可以任意指定多个字符集。
步骤4)中每种字符集的分词颗粒度n根据字符集的特性进行设置,例如:中文字符集的颗粒度n设置为2,即中文的词汇进行二元分词;英文字符集的颗粒度n设置为5,即每5个字母进行切分,即五元分词。
步骤5)中假设该读取字符的字符类型是英文,颗粒度n为5,那么继续逐字读取文件内容,直到下一个字符的字符类型不为英文字符;将目前读取的字符串,例如“abcdefg”,根据颗粒度5进行分词,建立索引;然后继续逐字读取文件内容,判读字符类型,不断循环往复,直到读取字符为空,也就是文件内容读完为止,结束程序。
本发明通过一种基于Lucene的动态n元分词方法,可将拥有不同字符集的机器数据,动态设置n的值。当词表过于庞大时,可将n的值变大。由于本发明可以设置不同的字符集,例如中文字符集,字母字符集,数字字符集,韩文字符集,日文字符集等,那么可以兼容多种不同国家的语言的分词,解决了Lucene自带分词器和第三方中文分词器中语言不够兼容的缺陷。
本发明的优点主要有:
1)可以设置不同字符集,兼容多种语言的分词;因此不仅限于中文,韩文,日文,甚至可以指定特殊符号字符集进行切词,建立索引;
2)可以对每种字符集设置不同的颗粒度(n),动态的颗粒度n使得每个字符集的切词颗粒度都可以不一样的,实现多种字符集不同的切分方式,因此比较适合机器数据;
3)现有的分词方法大多具有庞大的辞典,因此分词速度很慢,本发明没有大量的词库,不需要依赖词典进行分词,能很好地提升分词速度;
4)本发明方法针对互联网大数据领域,大数据百分之90是机器数据,没有那么多中文语句需要进行语义分析,中文只是非常非常少的一部分,所以那种带词库的中文分词器并不合适大数据领域使用,本发明尤为适合机器数据的处理;
5)经过本发明方法分词后的词表短,因此查询速度快;
6)由于实现n元分词,支持模糊查询;
7)本发明可以指定字符集,即对于多种语言,甚至小语种都可以通用。
附图说明
以下将结合附图对本发明作进一步说明:
图1是本发明方法的流程框图;
图2是图1中本发明方法步骤4)的方法示意图;
图3是图1中本发明方法步骤5)的流程示意图。
图1中S1表示步骤1),S2表示步骤2),S3表示步骤3),S4表示步骤4),S5表示步骤5)。
具体实施方式
参照附图1~3,本发明一种基于Lucene的动态n元分词方法,应用于互联网大数据领域。目前机器数据是大数据领域中增长最快,内容最复杂,也最具有价值的一类数据,占据90%的比重。机器数据是由服务器,存储,互联网及物联网中的设备或程序生成的大量结构化,非结构化的数据。例如当你来到公司,掏出员工卡,通过门禁刷卡的方式,十分方便地完成了你的上班考勤。那么一系列数据将会保存,这些数据就是机器数据。
下面将通过一部分机器数据作为样例,来说明本发明分词方法,本样例的字符如下:
"sum_doc_freq":14939557,"sum_total_term_freq":15375890,"searchable":true,"aggregatable":false,"min_value":"\n38","max_value":"黑风雨"●●◇▽♥♥♥。
一种基于Lucene的动态n元分词方法,包括如下步骤:
S1、设置停用词
停用词指的是不进行分词的词,读到该词直接跳过忽略,即不建立索引的词,本实施例采用的停用词设置为:‘"’,‘:’,‘_’,‘ ’,‘\n’,‘,’;
S2、指定不同字符集
本实施例中设置4种字符集,中文字符集,英文字符集,数字字符集,除上述三种剩下的所有字符属于特殊字符集;
S3、预处理
在预处理阶段,本发明将会需要进行分词的文档内容,进行一定的处理,将所有的英文大写字母转换成小写字母进行存储,建立索引;将所有全角的字符转换为半角字符进行存储,建立索引;将所有的中文繁体字转化为中文简体进行存储,建立索引等;
S4、指定不同字符集的分词颗粒度n
在步骤S2时,指定了多种字符集,那么在步骤S4将要对这些字符集指定不同的分词方式,即设置分词的颗粒度n;中文字符集的颗粒度设置为2,英文字符集的颗粒度设置为6,数字字符集的颗粒度设置为4,特殊字符集不进行分词,直接建立索引;
S5、分词
在步骤S5中,详细图形说明见图3;首先读取文件内容逐字读取,判断读取内容是否为空;读取内容为空的话,就会结束程序;不为空,判断是否是停用词,如果是停用词,直接跳过,继续读取文件内容;如果不是停用词,那么判断读取字符的字符类型,获取该字符集的颗粒度n,然后继续逐字读取文件内容,直到下一个字符的字符类型不为该字符集。将目前读取的字符串,根据颗粒度进行分词,建立索引。然后继续逐字读取文件内容,判读字符类型,不断循环往复,直到读取字符为空,也就是文件内容读完为止,结束程序。
根据上述机器数据,使用本发明方法,最后分词的结果为:
最后将上述词表,使用Lucene建立索引;如果觉得词表过于庞大,可以将颗粒度n变大,使词表减少。
当用户进行查询时,只要出现上述词表中的任意一个词,即可找到该词在文档中的具体位置。即实现了模糊查询的功能。
Claims (4)
1.一种基于Lucene的动态n元分词方法,其特征在于,包括以下步骤:
1)设置停用词,
所述停用词的含义为,不进行分词的词,读到该词直接跳过忽略,即不建立索引的词;
2)指定不同字符集,
所述不同字符集是需要进行分词的词,即要建立索引的词,也即用户将查询的词;该字符集根据用户需求来指定;
3)预处理,
将需要进行分词的文档内容,进行以下处理,即将所有的英文大写字母转换成小写字母进行存储,建立索引;将所有全角的字符转换为半角字符进行存储,建立索引;将所有的中文繁体字转化为中文简体进行存储,建立索引;
4)指定不同字符集的分词颗粒度n,
对步骤2)中指定的字符集指定不同的分词方式,即设置分词的颗粒度n;特殊字符集不进行分词,直接建立索引;
5)分词,
5-1)逐字读取文件内容,判断读取内容是否为空;如果读取内容为空就直接结束本步骤;不为空,进入下一步;
5-2)判断是否是停用词,如果是停用词,直接跳过,从该停用词后面的内容开始,进入步骤5-1)读取文件内容;如果不是停用词,进入下一步;
5-3)判断步骤5-2)中读取字符的字符类型,根据字符类型和步骤4)中预设的颗粒度进行循环读取词汇,直到下一个字符的字符类型不为步骤5-2)中读取字符的字符类型或者是停用词;
5-4)将步骤5-3)中读取到的字符串根据相应的颗粒度进行分词,建立索引;
5-5)回到步骤5-1),直到读取字符为空,即文件内容读完,结束分词;
步骤1)中所述的停用词包括常见标点符号、空格或换行符;当需要对标点符号进行分词,建立索引时,停用词不能为标点符号;停用词能够根据需求设定;
步骤2)所述的字符集包括中文字符集、日文字符集、英文字符集和数字字符集,没有被指定的字符和特殊的图形符号作为特殊字符集。
2.根据权利要求1所述的基于Lucene的动态n元分词方法,其特征在于,没指定的字符包括印度语的字符集。
3.根据权利要求1所述的基于Lucene的动态n元分词方法,其特征在于,步骤2)中指定的字符集的数量不受限制。
4.根据权利要求1所述的基于Lucene的动态n元分词方法,其特征在于,步骤4)中每种字符集的分词颗粒度n根据字符集的特性进行设置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710674957.8A CN107451122B (zh) | 2017-08-09 | 2017-08-09 | 一种基于Lucene的动态n元分词方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710674957.8A CN107451122B (zh) | 2017-08-09 | 2017-08-09 | 一种基于Lucene的动态n元分词方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107451122A CN107451122A (zh) | 2017-12-08 |
CN107451122B true CN107451122B (zh) | 2020-11-13 |
Family
ID=60491721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710674957.8A Active CN107451122B (zh) | 2017-08-09 | 2017-08-09 | 一种基于Lucene的动态n元分词方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107451122B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101963965A (zh) * | 2009-07-23 | 2011-02-02 | 阿里巴巴集团控股有限公司 | 基于搜索引擎的文档索引方法、数据查询方法及服务器 |
CN104699724A (zh) * | 2013-12-10 | 2015-06-10 | 北京先进数通信息技术股份公司 | 一种基于Lucene的数据搜索方法及装置 |
CN105426539A (zh) * | 2015-12-23 | 2016-03-23 | 成都电科心通捷信科技有限公司 | 一种基于词典的lucene中文分词方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462558B (zh) * | 2014-12-26 | 2017-12-08 | 浙江宇视科技有限公司 | 一种修改Lucene索引文件中词的方法及装置 |
-
2017
- 2017-08-09 CN CN201710674957.8A patent/CN107451122B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101963965A (zh) * | 2009-07-23 | 2011-02-02 | 阿里巴巴集团控股有限公司 | 基于搜索引擎的文档索引方法、数据查询方法及服务器 |
CN104699724A (zh) * | 2013-12-10 | 2015-06-10 | 北京先进数通信息技术股份公司 | 一种基于Lucene的数据搜索方法及装置 |
CN105426539A (zh) * | 2015-12-23 | 2016-03-23 | 成都电科心通捷信科技有限公司 | 一种基于词典的lucene中文分词方法 |
Non-Patent Citations (1)
Title |
---|
多元分词技术和全文检索技术在GIS地址定位中的应用;朱擎量等;《测绘与空间地理信息》;20111031;第34卷(第5期);第2页最后一段-第3页第8-13段 * |
Also Published As
Publication number | Publication date |
---|---|
CN107451122A (zh) | 2017-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10949709B2 (en) | Method for determining sentence similarity | |
US20180190270A1 (en) | System and method for semantic analysis of speech | |
Almeman et al. | Automatic building of arabic multi dialect text corpora by bootstrapping dialect words | |
CN104408078A (zh) | 一种基于关键词的中英双语平行语料库构建方法 | |
CN107341143B (zh) | 一种句子连贯性判断方法及装置和电子设备 | |
CN103077164A (zh) | 文本分析方法及文本分析器 | |
CN105760359B (zh) | 问句处理系统及其方法 | |
CN102479191A (zh) | 提供多粒度分词结果的方法及其装置 | |
Scheible et al. | A gold standard corpus of Early Modern German | |
CN110853625B (zh) | 语音识别模型分词训练方法、系统、移动终端及存储介质 | |
CN111178061B (zh) | 一种基于编码转换的多国语分词方法 | |
CN103324621A (zh) | 一种泰语文本拼写纠正方法及装置 | |
CN110413972B (zh) | 一种基于nlp技术的表名字段名智能补全方法 | |
CN104252542A (zh) | 一种基于词库的动态规划中文分词方法 | |
JP6427466B2 (ja) | 同義語ペア獲得装置、方法、及びプログラム | |
CN103559181A (zh) | 一种双语语义关系分类模型的建立方法和系统 | |
GB2575580A (en) | Supporting interactive text mining process with natural language dialog | |
CN105095196A (zh) | 文本中新词发现的方法和装置 | |
CN113806483A (zh) | 数据处理方法、装置、电子设备及计算机程序产品 | |
CN110705285B (zh) | 一种政务文本主题词库构建方法、装置、服务器及可读存储介质 | |
CN107451122B (zh) | 一种基于Lucene的动态n元分词方法 | |
CN107480128A (zh) | 中文文本的分词方法及装置 | |
CN101770478B (zh) | 数据检索方法、数据检索装置及嵌入式终端 | |
CN109344389B (zh) | 一种汉盲对照双语语料库的构建方法和系统 | |
CN112989839A (zh) | 一种基于关键词特征嵌入语言模型的意图识别方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |