电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

自然语言理解实验报告

13页
  • 卖家[上传人]:ni****g
  • 文档编号:482760087
  • 上传时间:2023-10-21
  • 文档格式:DOC
  • 文档大小:255.50KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、自然语言理解课程实验报告 实验一、中文分词1、 实验内容用最大匹配算法设计分词程序实现对文档分词,并计算该程序分词的正确率、召回率及F-测度。实验数据:(1)wordlist.txt 词表文件 (2)pku_test.txt 未经过分词的文档文件(3)pku_test_gold.txt 经过分词的文档文件 2、 实验所采用的开发平台及语言工具开发平台:Eclipse软件语言工具:Java语言 3、 实验的核心思想和算法描述核心思想:正向最大匹配算法 (Forward MM, FMM)算法描述: 正向最大匹配法算法如下所示:逆向匹配法思想与正向一样,只是从右向左切分,这里举一个例子:输入例句:S1=计算语言学课程有意思 ;定义:最大词长MaxLen = 5;S2= ;分隔符 = “/”;假设存在词表:,计算语言学,课程,意思,;最大逆向匹配分词算法过程如下:(1)S2=;S1不为空,从S1右边取出候选子串W=课程有意思;(2)查词表,W不在词表中,将W最左边一个字去掉,得到W=程有意思;(3)查词表,W不在词表中,将W最左边一个字去掉,得到W=有意思;(4)查词表,W不在词表中,将W最左

      2、边一个字去掉,得到W=意思(5)查词表,“意思”在词表中,将W加入到S2中,S2= 意思/,并将W从S1中去掉,此时S1=计算语言学课程有;(6)S1不为空,于是从S1左边取出候选子串W=言学课程有;(7)查词表,W不在词表中,将W最左边一个字去掉,得到W=学课程有;(8)查词表,W不在词表中,将W最左边一个字去掉,得到W=课程有;(9)查词表,W不在词表中,将W最左边一个字去掉,得到W=程有;(10)查词表,W不在词表中,将W最左边一个字去掉,得到W=有,这W是单字,将W加入到S2中,S2=“ /有 /意思”,并将W从S1中去掉,此时S1=计算语言学课程;(11)S1不为空,于是从S1左边取出候选子串W=语言学课程;(12)查词表,W不在词表中,将W最左边一个字去掉,得到W=言学课程;(13)查词表,W不在词表中,将W最左边一个字去掉,得到W=学课程;(14)查词表,W不在词表中,将W最左边一个字去掉,得到W=课程;(15)查词表,“意思”在词表中,将W加入到S2中,S2=“ 课程/ 有/ 意思/”,并将W从S1中去掉,此时S1=计算语言学;(16)S1不为空,于是从S1左边取出候选

      3、子串W=计算语言学;(17)查词表,“计算语言学”在词表中,将W加入到S2中,S2=“计算语言学/ 课程/ 有/ 意思/”,并将W从S1中去掉,此时S1=;(18)S1为空,输出S2作为分词结果,分词过程结束。 4、 系统主要模块流程、源代码import java.io.*;import java.util.Vector;public class WordSequencepublic static void main(String args)tryFileInputStream fis=new FileInputStream(F:pku_test.txt);InputStreamReader SR=new InputStreamReader(fis);BufferedReader BR=new BufferedReader(SR);String pku=;while( (pku=BR.readLine()!=null) Sequence pku_test=new Sequence(pku); System.out.println( );catch(IOException e)Syste

      4、m.out.print(e);class Sequencestatic final int WORD_MAX_LENGTH = 9; static Vector ve=new Vector(); FileWriter FW=new FileWriter(F:mypuk_test.txt,true); String seq=null;public Sequence(String str) throws IOExceptionclass LoadDictionarypublic LoadDictionary(FileReader reader) throws IOExceptionBufferedReader stream=new BufferedReader(reader);String LD=null;while(LD=stream.readLine()!=null)ve.add(LD);FileReader list=new FileReader(F:wordlist.txt); LoadDictionary Dic=new LoadDictionary(list);int num=

      5、str.length();if(num=WORD_MAX_LENGTH) int i,j=0;while (jnum)for( i=0;i+j=WORD_MAX_LENGTH) i=j+WORD_MAX_LENGTH; for(;ij;i-) seq=str.substring(j,i); if(ve.contains(seq)|(i-j=1) System.out.print(seq+ ); FW.write(seq+ ); j=i; break ; while (jnum)for( i=0;i+jnum;i+)seq=str.substring(j,num-i); if(ve.contains(seq)|(num-i-j=1) System.out.print(seq+ ); FW.write(seq+ ); j+=num-i-j; break ; 程序说明:程序由两个类组成,公共类WordSequence和类Sequence,类Sequence主要实现对一个字符串进行分词。思路是:首先,把词表中的词存储在一个Vector对象中,这一步很关键。因为Vector类中提供了一个cont

      6、ains函数可以方便的判断词表中是否有所对照的字符串。起初,我也尝试了直接用一个字符串数组存储词表中的字符串,但后来发现特别不方便。然后,根据字符串的长短对其按照正向最大匹配法进行处理。最后,在main()方法中,定义一个文件字符流,利用readLine()函数没读一行,声明一个Sequence对象,对这行字符串进行处理。具体程序见上。 5.实验结果及分析实验结果: 实验分析:从上述结果可以看出,基本上程序输出的结果是正确的,只有少数词存在一些误差。而这些误差对于这个算法是完全允许的。比如“他是研究生物化学的。”输出结果为“他/ 是/ 研究生/ 物化/ 学/ 的/。”可见,正向最大匹配法并不能做到完美。有时逆向最大匹配法会比正向最大匹配法四处结果要好很多。 实验二、分词与词性标注系统ICTCLAS 1. 实验内容实验数据:pku_test.txt 未经过分词的文档文件调用ICTCLAS程序对其中的文档进行分词 2. 实验所采用的开发平台及语言工具开发平台:ICTCLAS50_Windows_64_JNI、eclipse软件语言工具:Java语言 3.系统主要模块流程、源代码import

      7、 ICTCLAS.I3S.AC.ICTCLAS50;import java.util.*;import java.io.*; public class WSpublic static void main(String args)tryICTCLAS50 testICTCLAS50 = new ICTCLAS50(); /分词所需库的路径String argu = .;/初始化if (testICTCLAS50.ICTCLAS_Init(argu.getBytes(GB2312) = false)System.out.println(Init Fail!);return; /输入文件名String Inputfilename = F:pku_test.txt;byte Inputfilenameb = Inputfilename.getBytes(); /分词处理后输出文件名String Outputfilename = F:test_result.txt;byte Outputfilenameb = Outputfilename.getBytes(); /文件分词(第一个参数为输入文件的名,第二个参数为文件编码类型,第三个参数为是否标记词性集1 yes,0 no,第四个参数为输出文件名)testICTCLAS50.ICTCLAS_FileProcess(Inputfilenameb, 2, 2,Outputfilenameb);c

      《自然语言理解实验报告》由会员ni****g分享,可在线阅读,更多相关《自然语言理解实验报告》请在金锄头文库上搜索。

      点击阅读更多内容
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.