按tutorial搭建solr4.1.0环境

【实验目的】:在linux服务器上安装配置solr4.1.0版本环境. 完成效果:自带demo可以运行。(需要安装web环境,tomcat/jetty都行) 【参考】:http://lucene.apache.org/solr/4_1_0/tutorial.html 1:环境需要 1.1 java 1.6.0以上版本,查看版本,已安装 1.2 Solr release 4.1.0版本,到solr的官方网站进行下载 $ unzip –q solr-4.1.0.zip 进行解压contrib有一些功能模块是需要的jar包 dist是打包发布好的工程war包 docs是帮助文档 example是示例,里面有打包部署好的solr工程示例和servlet容器jetty。如果你没有tomcat可以直接使用Jetty服务器部署你的solr示例。 PS. 对于servlet容器容器,solr自带了jetty,而且官方网站的tutorial为简单起见也采用的是jetty,不过用tomcat的用户比较多,我们采用tomcat。 1.3 tomcat包安装 到tomcat的官网上http://tomcat.apache.org 下载当前最新版本(目前为7.0.37 Core:->tar.gz文件) $ tar –zxvf apache-tomcat-7.0.37.tar.gz 进行解包 2:利用tomcat发布solr示例 2.1修改一些配置 a). 修改 /home/xujiaming/jacoxu20130222/apache-tomcat-7.0.37/conf/server.xml,修改第70行,加个 URIEncoding=”UTF-8″,把 8080 的那一块改为: b). … 继续阅读

基于同音别字进行纠错词推荐

基于同音别字进行纠错词推荐流程应该是如下: 根据之前的同音别字词典: niuyuenikesi -> 纽约尼克斯 huojian -> 火箭 lixiang -> 理想 立项 李湘 zhongkeyuan -> 中科院 钟克媛 NBA -> NBA linshuhao -> 林书豪 guojingming -> 郭敬明 zidonghuasuo -> 自动化所 yaoming -> 要命 姚明 药名 耀明 进行查询索引测试 package CB_QR;       import java.io.IOException; … 继续阅读

同音别字纠错字典的创建

题外话:搜狗实验室http://www.sogou.com/labs/ 提供了很多中文语料库,有词典词频和词性,基于web域的。我们这里先不考虑。关于建立索引和查询也可以看看企业常用的lucene和solr。下面进入正题。 一:用户词库usrdict 拿到的用户词库usrdict.txt(699781个词汇)是从百度百科和互动百科中抽取的实体词条,从infobox中抽取结构化数据(三元组)。Usrdict中的词不一定会构成三元组,但三元组中的实体词一定在usrdict中。Usrdict中出现的一些字符错误如: 而放到html代码中进行显示,可以看到: ‎织金县第二中学 ‎虚拟村庄 <<18岁29岁>> <<S日记>> <<上下策>> <<乱世浮生>> <<云之南>> “一二•一”运动纪念馆 “三八”式步枪 “三高”防治日常按摩图典 …… 说明是抽取时没有处理好生僻字和html符号的问题,如<>实际上对应<>、”对应“号等。可直接删除,后面有正确的词。这只是一小部分,删掉后还有699619个词,但实际上usrdict中还有一些无意义的词,例如最后一个词条“¥23.00元”,考虑这些也不是大部分,就先将就着用吧。 二:同音别字的纠错词典 为了建立同音别字的纠错词典,需要利用java集合中的HashMap。 首先把usrdict中的同音别字词全部整理处理,例如简单的一个testusrdict.text中的内容为: 要命 姚明 药名 耀明 林书豪 郭敬明 火箭 NBA 纽约尼克斯 自动化所 中科院 钟克媛 理想 立项 李湘 把字典中词的拼音转化出来,并命名为dicAddPY.txt: package CB_QR_Tools; import java.io.FileWriter; … 继续阅读

QA中文查询词纠错初级模型框架

一:中文查询词纠错框架 中文处理的难点: 1, 字符有8W左右; 2, 词汇有6W左右; 3,一词多义; 4,书写不分词; 5,发音与字形(同音词,形近词) 对于初级模型来说可以把输入的字符和数据库中的现有实体名词进行字符串匹配. 如果匹配的上就直接采用用户输入查询词, 如果没有匹配上就需要进行纠错处理. 模型的建立可基于拼音,基于编辑距离,基于N-gram模型,基于统计等. 中文纠错有多种原因, 我们先仅考虑键盘录入错误. 中文查询词纠错的目的主要是推测用户输入, 确定查询信息, 给出纠错意见. 中文查询信息有两大特点: 1. 不包含错字; 2. 错误信息最多的是同音别字错误. 例: 要命-姚明. 这是由于输入法日益流行导致的. 因为拼音输入法学习成本低,思维干扰的最少,普及广,所以出现了大量的同音词错误,而多字漏字的情况多是由于不小心的输入造成的。根据这种错误的特点,设计中文查询词纠错模块使用基于拼音hash词典的纠错算法,和多字驱动词典+字符串匹配的纠错算法,利用前者处理包含同音别字的查询信息,利用后者处理包含多字漏字的查询信息。纠错模块结构如下: 二:同音别字查询词纠错 2.1 对于同音别字查询,首先第一要做的是把输入的字符串转换为拼音 Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 Pinyin 4j介绍:有时候,需要将汉字编程对应的拼音,以方便数据的处理。比如在Android手机应用 的开发上,要查询联系人的姓名,通常都是用拼音进行查询的。比如要查询“曹孟德”,就可以输入“cmd”,即“曹孟德”三个汉字的拼音 “caomengde”各字的首字母。但是怎样才能将“曹孟德”翻译成“caomengde”呢?很简单的办法就是建立一个大的对照表(比如用关联容器 Map),比如<”曹”,”cao”>,<” 孟”,”meng”>,<” 德”,”de”>…但这样的做法,需要维护好一个比较大的对照表,同时一个汉字可能有多个发音,也就是说Map这样的容器时不行的,因为 其<key,value>必须是一一对应的。在C++中可以用STL里面的multimap来解决这个问题,但Java中没有类似 multimap这样的东西,除非自己实现一个。 … 继续阅读

匹配学习Learning to Match

关于匹配学习,李航老师在今年图灵诞辰100周年的一个简单报告中简要介绍了匹配学习的意义。李航老师今年总共做了4个关于learning to match的报告 第一个:Workshop on Algorithms for Modern Massive Data Sets. Stanford University. July 10–13, 2012 [pdf],[video] 题目:Large Scale Machine Learning for Query Document Matching in Web Search 主要介绍Query-Document的重新表示并进行match匹配,他的第三篇报告20120817 Learning to Match for Natural Language Processing and Information Retrieval yssnlp_2012 … 继续阅读