zoukankan      html  css  js  c++  java
  • 写一点应用关于 Lucene.Net,snowball的重新组装(二)

    作者:finallyliuyu

    (一)中我们已经说明了任务需求。(二)中我们将驶入重点,如何用Lucene.Net,以及其他的一些开源工具实现上述功能。

          里要首先感谢一个人智慧掩盖真相。此人写了一个系列对于Lucene.net内部机制的入门性质的文章,令我在短时间内掌握了Lucene.net的一些要领。

        这里插一句我自己的对科研人员,与专业程序员的工作侧重点区别:专业程序员应该对某个编程产品熟谙其道,而且他的代码布局也应该说是优秀的,就好比一位大作家的文字。而科研人员,注重的是思想和算法,但是算法和思想的实现要借助于程序,借助于“工程”。这时,我们所需要的是,在了解某个软件,或是开源组件不多的情况下,能够快速地搭建系统,实现自己的思想和算法。所有我们需要虚心请教专业人士即“有工程项目经验的人”

    下面就是像罗列菜谱一样介绍如何利用开源工具进行组装完成(一)中的需求

    开源工具 snowball(其中包含lucene.net dll) porter stemmer C#代码词性标注工具

    核心思路:在SnowballAnalyzer.cs中进行修改。

    原因在于如下: Lucene 的Analyzer 类的父类是Tokenizer or TokenStream(这里有点记不清了) ,同时Analyzer类是IndexWrtier类的先行者,每当调用IndexWriter将结果写入Lucene自带的“数据库”中,必要先调用个Analyzer.所以我们在Analyzer类中修改代码。

    另外一个问题是:snowball本来带有词根还原的功能,通过在SnowballAnalyzer类中调用SnowballFilter类实现。在SnowballFilter类中可以找到调用 stemmer的相关语句。

    但是我们现在要进行词性标注,显然是应该先进行词性标注,然后才能进行词根还原。为此,snowballAnalyzer不再调用SnowballFilter完成词根还原功能了。我们把所有的功能在snowballAnalyzer中实现。

  • 相关阅读:
    ASP.NET Core – Web API Versioning
    ASP.NET Core – Handle Error on Web API
    ASP.NET Core – MVC vs Razor Page
    EF Core – Library use EF
    ASP.NET Core – Filter
    GeoServer地图开发解决方案
    参透人生的一道计算题
    iscroll4 精讲
    各种分割线Html代码
    iBatis入门教程
  • 原文地址:https://www.cnblogs.com/finallyliuyu/p/1812906.html
Copyright © 2011-2022 走看看