欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

TrieTree服务-组件构成及其作用介绍

程序员文章站 2024-03-04 19:30:12
上一篇中我们对trietree服务有了一个整体的了解,不知道大家下载完之后有没有真正玩过这个trietree服务,如果你还没有玩过,没关系,本文将一步步教你配置和使用tri...

上一篇中我们对trietree服务有了一个整体的了解,不知道大家下载完之后有没有真正玩过这个trietree服务,如果你还没有玩过,没关系,本文将一步步教你配置和使用trietree服务。

trietree服务由几大组件组成,如下图

TrieTree服务-组件构成及其作用介绍

dictionary组件是核心库,主要提供基本数据定义、配置信息定义,数据结构表示,同时也提供了postype(参考pangu的part of speech定义)。由于trietree是利用内存来加载数据的,所以这个组件的设计直接决定了内存的占用大小和数据查询性能。dictionary.providers组件主要负责提供各种自定义数据提供者(dataprovider),你可以把它理解为字典数据的加载器,例如自带的pangudictproviders就是负责加载盘古自己的dict格式的字典。trietree服务的加载器是高度可配置的,你可以通过配置文件来选择你需要使用的加载器,如下所示:

复制代码 代码如下:

<dictionaryservice>
<provider name="pangu_dict" uri="f:\dropbox\research\nlp\trietreeservice\dictionaryservice.unittest\data\pangudict.dct" type="blueprint.dictionary.providers.pangudictprovider, blueprint.dictionary.providers" />
<provider name="ikdict" uri="f:\dropbox\research\nlp\trietreeservice\dictionaryservice.unittest\data\ikdict.dic" type="blueprint.dictionary.providers.txtfileprovider, blueprint.dictionary.providers"/>
</dictionaryservice>

上面这个配置选择了2个加载器,分别是pangudictprovider、txtfileprovider(纯文本格式加载器,你可以理解为.csv字典加载器),这里的txtfileprovider是用来加载ikanalyzer中的ikdict.dic文件的。在服务启动后(调试模式)你会看到类似的提示:

TrieTree服务-组件构成及其作用介绍

trietree中由于使用了log4net的coloredconsoleappender,所以能够显示不同颜色的提示信息。你会看到日志中有pangu_dict和ikdict的加载时间,这里的名字是由app.config中的provider的name属性设置的。其实trietree也是支持加载基于mongodb的字典的,只是由于牵扯到相对复杂的mongodb的配置和一些概念,就不在本文中讲解了,我会考虑在之后的教程中提供。

dictionaryservice组件是trietree服务的容器组件,主要包含了windows服务的实现,还有windows服务的安装器。这个组件是一个控制台程序,它为用户提供了两种运行模式——调试模式和service模式。调试模式就是直接运行控制台,提供基于log4net的日志信息,方便调试和断点;而service模式是直接运行为一个windows服务,主要用于测试与生产环境。由于是控制台程序,切换模式是通过参数完成的,例如-i 表示安装windows服务,-u表示卸载windows服务, -c表示启动控制台模式。

以上便是trietree服务的三大核心组件,但我还打算介绍一个非常实用的附加组件dictionaryquery。

TrieTree服务-组件构成及其作用介绍

虽然名字也叫查询分析器,但其实和sql的查询分析器不是一个级别的,你不用去比较,没啥意思。这东西主要是两个作用,第一,测试trietree服务的运行情况;第二,检查加载字典后字典中的词的状态。你也可以用右侧的pos过滤器进行筛选,多选表示或的关系,比如你选择了地名和人名,你搜索“上海”,结果是“上海, 频率:251, 类型:地名(a_ns)”,如果找不到的话会显示红色的“未找到合适词”,如下所示。

TrieTree服务-组件构成及其作用介绍

你还可以选择匹配的方式,即最大正向匹配、最大反向匹配和完全匹配,这个就不用我多解释了吧。对了,运行这玩意之前字典服务必须打开,且你要指向你配置的trietree服务的端口,默认是7010,图中配置的是dict://127.0.0.1:7010,注意字典服务的uri是以dict://开头的。