en是日语的一种词典分词组建,准确性高。
1. 下载sen,下载的文件不含词典,需要用ant 重新构造。
http://www.mlab.im.dendai.ac.jp/~yamada/ir/MorphologicalAnalyzer/sen-1.2.2.1.zip
构造:
# cd /usr/local/sen
# ant
Buildfile: build.xml
...
BUILD SUCCESSFUL
Total time: X seconds
# cd dic
# ant
Buildfile: build.xml
...
BUILD SUCCESSFUL
Total time: Y minute Z seconds
#
如果不想构造,我这边也保存现成的文件 http://yunpan.cn/QeUASmntdAjB8 (访问密码:b1a5)
2. 用sen词典进行分词,需要导包 http://yunpan.cn/QeUAbhPs35XwF (访问密码:8397)
public class SenAnalyzeTools {
public SenAnalyzeTools() {
// TODO Auto-generated constructor stub
}
private static StringTagger tagger;
private static synchronized StringTagger getSingontenInstance() {
if (tagger == null) {
try {
tagger = StringTagger.getInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
return tagger;
}
public static List<String> getAnalyzeWords(String words){
System.setProperty("sen.home", "D:\\java\\JavaWorkSpace\\Shop\\WebRoot\\sen1.2"); // 词典的存放路径
List<String> list = new ArrayList<String>();
try {
net.java.sen.Token[] tokens = getSingontenInstance().analyze(words);
for (net.java.sen.Token token : tokens) {
if (token.getPos() != null) {
if (token.getPos().contains("名詞")) {
list.add(token.getBasicString());
}
}
System.out.println("getAddInfo=="+token.getAddInfo());
System.out.println("getCform=="+token.getCform());
System.out.println("getCost=="+token.getCost());
System.out.println("getPos=="+token.getPos());
System.out.println("getSurface=="+token.getSurface());
System.out.println("getBasicString=="+token.getBasicString());
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String words = "Edifice EFR-50";
System.out.println(SenAnalyzeTools.getAnalyzeWords(words));
}
}
3. sen词典和lucene进行整合,需要下载一个包 http://yunpan.cn/QeUApI9twWYr7 (访问密码:851a)
/**
* 获得日文分词器
* */
public static Analyzer getAnlyzer()
{
System.setProperty("sen.home", SEN_HOME); //词典的存放路径
return new org.apache.lucene.analysis.ja.JapaneseAnalyzer();
}
public static IndexWriter openIndexWriter(String indexPath) {
System.setProperty("sen.home", SEN_HOME); // 索引的存放路径
try {
File indexDir = new File(indexPath);
File file = new File(STR_INDEXDIR+"/segments");
IndexWriter writer = null;
if(indexDir.exists()){
if(indexDir.listFiles().length > 1){
writer = new IndexWriter(indexDir,getAnlyzer(), false);
if(writer != null){
writer.setUseCompoundFile(true);
}
return writer;
}
else
{
writer = new IndexWriter(indexDir,getAnlyzer(),!file.exists());
if(writer != null){
writer.setUseCompoundFile(true);
}
return writer;
}
}
else{
throw new Exception(indexDir+ " does not exist or is not a directory.");
}
} catch (Exception e) {
e.printStackTrace();
doLuceneException();
}
return null;
}
4. sen词典也是可以自己构造的,可以做成自定义的词典。
词典制作
1:第一步:
首先需要找到准备做词典的词
寻找方法:
以前的做法是找到数据中的所有平假名和汉字在一起的名词词语,然后根据词频进行判断,最后找出所有词频大于某个数字的词语作为候选词语
2:生成csv文件
这个csv文件是生成sen词典的必须部分
Csv文件的格式大致如下
国務,2676,名詞,一般,*,*,*,*,国務,コクム,コクム
其中“国務”就是我们的需要做词典的词语,最后面的“コクム,コクム”这两部分我们不用理会,以*代替,最后的格式为:国務,2676,名詞,一般,*,*,*,*,国務,*,*
其中词性包括:
名詞-一般
名詞-固有名詞-一般
名詞-固有名詞-地域-一般
形容詞-自立
助詞-副詞化等等
我们做词典使用的词性是所有的名词
然后把我们找到的词制作成dic.csv文件,这是前提条件
3:使用ant命令生成sen词典
首先去要安装ant环境,和制作sen词典需要的环境变量
Ant下载地址:http://ant.apache.org/
下载最新版本1.7
Sen环境需要下载lucene-ja.jar和lucene-core-2.3.2.jar,commons-logging.jar,sen.jar,commons-logging-api.jar,这些jar文件都可以在apache官方网找上找到
接下来在硬盘中建立一个文件夹,将其sen1.2这个文件夹拷贝到新建的文件夹下,sen1.2这个文件夹是sen词典自带的文件夹,可以在我们的项目中找到
把我们刚刚生成的dic.csv文件拷贝到sen1.2文件夹下,覆盖原先的dic.csv,最后一步就进入命令行执行ant命令,执行完毕后会生成4个后缀以sen结尾的文件,分别为da.sen,matrix.sen,posInfo.sen,token.sen,这4个文件就是我们生成后的字典。只需要这4个文件就好了
词典制作过程
利用标准的词典来制作我们网站需要的词典。
总体分为一下几步:
读出我们网站数据库中的数据。
对数据进行过滤,模式匹配,去掉无关字符。
用标准词典进行分词,进行词性判断,只留名词。
统计,去重。
在索引中查询,确定词典的用词。
搭建ANT Perl
环境,生成词典。
查询优化词典,加入缺少的词。
重复第6,7步。
最后将生成的词典放入系统中进行应用。
以下是词典制作的详细步骤和例子:
读出我们网站数据库中的数据。
这一步主要是从数据库中读出我们抓取的原数据,可以先读在文件里面,也可以一边读一边进行第2步操作,根据机子的性能决定。
在lyfee词典的制作过程中,先将数据库中的原数据写到文件中去。运行Make_Dictionary工程中/Make_Dictionary/src/com/itmg/cyh/dao/FindLinkOne.java类。20万条数据写一个文件。
2.对数据进行过滤,模式匹配,去掉无关字符。
这一步是将读出来的文本进行匹配,过滤去掉文本中无关的字符(如:数字,字母各种特殊字符等。)
在lyfee中/Make_Dictionary/src/com/itmg/cyh/findLink/LinkPartern.java类进行文本的匹配,过滤等。
用标准词典进行分词,进行词性判断,只留名词。
这一步是将第二步得到的结果用标准词典进行分词,分词在四次以上的我们要,在这一步中就直接去掉,用词性进行判断,只留下名词,在名词中又分为表示地名的名词,然后写在不同的文件中。
在lyfee中/Make_Dictionary/src/com/itmg/cyh/findLink/DetailSearchBean.java类中的parseCommonPartern()方法进行此操作。然后直接运行类DetailSearchBean.java第2步和第3步同时进行。
统计,去重。
这一步是统计第三步得到的结果,判断词出现的频率,将出现频率在10次以上的词和10词一下的词写在不同的文件中。
在lyfee中,/Make_Dictionary/src/com/itmg/cyh/findLink/Account.java类中的countFilter()方法进行此项操作。
在索引中查询,确定词典的用词。
将第四步得到的结果一个一个的在索引中进行查询,将搜索结果在5条以上的词确定为词典用词,写在对应的文件中。
在lyfee中/Make_Dictionary/src/com/itmg/cyh/findLink/Account.java类中的accountByIndex()方法进行此项操作。
直接运行Account.java类,第四步和第五步一块执行。
6.
搭建ANT Perl
环境,生成词典。
配置ant
和 perl环境,生成词典。
改了
<propertyname="commons-logging.jar"value="d:/sen/lib/commons-logging.jar"/>
<propertyname="commons-logging-api.jar"value="d:/sen/lib/commons-logging-api.jar"/>
<propertyname="sen.jar" value="d:/sen/lib/sen.jar"/>
在lyfee中/Make_Dictionary/src/com/itmg/cyh/tool/MakeDic.java类将词典用此写到对应的csv文件中,最后在命令行下
运行ant命令,编译生成词典。
差性能优化词典,加入缺少的词。
==================================================================
词典制作,以日语词典为例:
修改build.xml
1.
<property name="perl.bin" value="/usr/bin/perl"/>
修改为
<property name="perl.bin" value="c:/usr/cygwin/bin"/>
2.
<target name="create" depends="dics0" unless="dics.present">
修改为
<target name="create" unless="dics.present">
OK
cmd 窗口中
cd C:\make_sen_1\sen1.2\dic
ant
。。。
大功告成
附件中有例子
http://www.xuebuyuan.com/786587.html
分享到:
相关推荐
在IT领域,尤其是在数据分析和统计学中,Mann-Kendall趋势检验和Sen斜率估计是两种常用的方法,用于检测时间序列数据中的趋势变化。这两种方法对于环境科学、社会科学、经济学等多个学科的数据分析都非常重要。 ...
SEN学生,即特殊教育需求学生,指那些在学习、情感、行为等方面有特殊需求的学生。SEN学生面对学习和日常生活中的挑战,需要特别的教育方法和支持。本文件标题为“sen 2 for SEN students”,意味着这是为SEN学生...
R语言中的Theil-Sen回归分析数据分析报告论文(代码数据) Theil-Sen估计器是社会科学中不常用的简单线性回归估计器,它具有三个步骤:在数据中所有点之间绘制一条线、计算每条线的斜率、计算中位数斜率作为回归...
Sen2Cor是由欧洲空间局(ESA)开发的软件包,用于将Sentinel-2 Level-1C产品处理成Level-2A产品。Sentinel-2是一项欧洲地球观测任务,提供地球陆地和沿海区域的高分辨率光学图像。 Level-1C产品是包含卫星观测地球...
Sen2Cor是一款针对Sentinel-2卫星数据进行土地覆盖分类和大气校正的专业软件,它在地球观测领域具有重要地位。Sentinel-2是欧洲航天局(ESA) Copernicus计划的一部分,提供高分辨率的多光谱图像,用于环境监测、...
Sen可以用来计算连续时间序列数据的趋势分析,例如长时间序列下的NDVI,植被覆盖度,气温、降水、相对湿度等气象数据的变化趋势,对于具有空间信息的栅格数据(遥感影像)来说,ENVI可以基于栅格进行计算,将二者相...
中文版SEN2COR工具大气校正原理验证评估详解 SENTINEL-2 任务是欧空局在哥白尼计划框架内发展的光学成像任务,旨在提供高精度的光学数据产品,用于土地监测、应急管理和安全性。SENTINEL-2 任务由两颗极地轨道卫星...
SP708SEN 数据手册 本文档是关于 SP708SEN 微处理器监督电路的详细手册,旨在帮助用户了解该芯片的特性、功能和应用场景。 概述 SP708SEN 是一款低功率微处理器监督电路,旨在监控微处理器的电源供应和电池电压。...
sen-len sen-len sen-len sen-lensen-len sen-len sen-len sen-lensen-len sen-len sen-len sen-lensen-len sen-len sen-len sen-lensen-len sen-len sen-len sen-len
《平滑的 Kijun-Sen - MetaTrader 5脚本》 在金融交易领域,技术分析是投资者预测市场走势的重要工具,而Ichimoku Kinko Hyo(Ichimoku云)指标则是其中一种非常实用的分析方法。本文将深入探讨Ichimoku云中的关键...
Sen2Cor是一款专门针对Sentinel-2卫星影像的开源处理工具,主要用于 Sentinel-2 多光谱图像的辐射校正和大气纠正。该工具由欧洲空间局(ESA)开发,目的是提供一个统一的方法来处理 Sentinel-2 的 Level-1C 数据,将...
可针对遥感时序数据进行空间上的SEN趋势度分析及MK显著性检验,亲测可用
【Kijun-sen MetaTrader 4脚本详解】 MetaTrader 4(MT4)是一款全球流行的外汇交易和分析平台,由MetaQuotes Software Corp开发。它提供了丰富的技术分析工具、图表功能以及自动化交易策略(称为Expert Advisors,...
《含有提醒功能的 Kijun-Sen - MetaTrader 5脚本详解》 在金融交易领域,MetaTrader 5(MT5)是一个广泛使用的交易平台,它提供了丰富的交易工具和技术分析指标,帮助交易者做出明智的决策。而"含有提醒功能的 ...
Sen2Cor软件释义和更新日志 Sen2Cor是欧洲空间局(ESA)委托的一种卫星影像处理软件,旨在对 Sentinel-2卫星影像进行处理和分析。Sen2Cor软件提供了从Level-1C到Level-2A的影像处理功能,可以对卫星影像进行大气...
Sen2Cor是一款针对Sentinel-2卫星影像的专业预处理软件,专为Windows操作系统设计。Sentinel-2是由欧洲航天局(ESA)运行的地球观测卫星系统,主要用于土地覆盖监测、农作物生长评估、环境监测和灾害响应等任务。该...
丢在默认工作路径下直接调用就好了,内部有输入说明,输出1,2,3分别为Sen's Trend, MK sig test
Sentinel-2欧空局官方免费大气校正软件Sen2Cor 64位2.8版本。Sentinel-2 官方查询下载地址:欧空局 https://scihub.copernicus.eu/dhus/#/home
这里提供的"Sen2Cor-02.08.00-win64"文件包含了适用于Windows 64位系统的Sen2Cor安装包。安装后,你需要确保Sen2Cor已经正确配置到你的系统路径中,以便Python脚本能调用它。 接下来,我们需要编写Python脚本来自动...