基于机器学习的英汉字典模糊查询毕业设计论文.docx

上传人:b****3 文档编号:7174158 上传时间:2023-01-21 格式:DOCX 页数:24 大小:191.96KB
下载 相关 举报
基于机器学习的英汉字典模糊查询毕业设计论文.docx_第1页
第1页 / 共24页
基于机器学习的英汉字典模糊查询毕业设计论文.docx_第2页
第2页 / 共24页
基于机器学习的英汉字典模糊查询毕业设计论文.docx_第3页
第3页 / 共24页
基于机器学习的英汉字典模糊查询毕业设计论文.docx_第4页
第4页 / 共24页
基于机器学习的英汉字典模糊查询毕业设计论文.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

基于机器学习的英汉字典模糊查询毕业设计论文.docx

《基于机器学习的英汉字典模糊查询毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于机器学习的英汉字典模糊查询毕业设计论文.docx(24页珍藏版)》请在冰豆网上搜索。

基于机器学习的英汉字典模糊查询毕业设计论文.docx

基于机器学习的英汉字典模糊查询毕业设计论文

OA基础理论•B应用研究OC调查报告OD其他

本科生毕业设计(论文)

基于机器学习的英汉字典模糊查询

二级学院

信息科学与技术学院

计算机科学与技术

2010级

2010344369

作者姓名

苏家辉

指导教师

蔡广基副教授

完成日期:

2014年5月24日

基于机器学习的英汉字典模糊查询

专业名称:

计算机科学与技术

作者姓名:

苏家辉

指导教师:

蔡广基

论文答辩小组

组长:

蔡广基

成员:

王晓晔

关心

论文成绩:

1引言1矚慫润厲钐瘗睞枥庑赖。

1.1研究背景及其意义1聞創沟燴鐺險爱氇谴净。

1.2研究内容和目标1残骛楼諍锩瀨濟溆塹籟。

2研究与实现中的关键技术1酽锕极額閉镇桧猪訣锥。

2.1机器学习的基本原理1彈贸摄尔霁毙攬砖卤庑。

2.2有趣模式的提取1謀荞抟箧飆鐸怼类蒋薔。

2.3有趣模式集的优化2厦礴恳蹒骈時盡继價骚。

2.4使用动态规划的最长公共子序列2茕桢广鳓鯡选块网羈泪。

3系统设计3鹅娅尽損鹌惨歷茏鴛賴。

3.1总体结构3籟丛妈羥为贍偾蛏练淨。

3.2业务流程设计4預頌圣鉉儐歲龈讶骅籴。

3.3数据结构设计4渗釤呛俨匀谔鱉调硯錦。

3.3.1宏定义4铙誅卧泻噦圣骋贶頂廡。

3.3.2结构体4擁締凤袜备訊顎轮烂蔷。

3.3.3文件5贓熱俣阃歲匱阊邺镓騷。

4实施应用5坛摶乡囂忏蒌鍥铃氈淚。

4.1开发环境5蜡變黲癟報伥铉锚鈰赘。

4.1.1硬件平台5買鲷鴯譖昙膚遙闫撷凄。

4.1.2软件平台5綾镝鯛駕櫬鹕踪韦辚糴。

4.2开发环境的搭建和配置6驅踬髏彦浃绥譎饴憂锦。

4.3编写代码6猫虿驢绘燈鮒诛髅貺庑。

4.3.1最长公共子序列长度核心代码6锹籁饗迳琐筆襖鸥娅薔。

432机器学习模型的c语言实现7構氽頑黉碩饨荠龈话骛。

5测试与分析13輒峄陽檉簖疖網儂號泶。

5.1精确查询的实现13尧侧閆繭絳闕绚勵蜆贅。

5.2一般模糊查询的实现14识饒鎂錕缢灩筧嚌俨淒。

5.3基于动态规划的模糊查询实现15凍鈹鋨劳臘锴痫婦胫籴。

5.4机器学习模型对于LCS模糊查询的优化15恥諤銪灭萦欢煬鞏鹜錦。

5.5机器学习模型的自动优化16鯊腎鑰诎褳鉀沩懼統庫。

6结论18硕癘鄴颃诌攆檸攜驤蔹。

参考文献18阌擻輳嬪諫迁择楨秘騖。

致谢18氬嚕躑竄贸恳彈瀘颔澩。

基于机器学习的英汉字典模糊查询

作者苏家辉指导教师蔡广基副教授

(湛江师范学院信息科学与技术学院,湛江524048)

摘要:

本文研究机器学习的基本原理和实现方法,对一个使用动态规划实现的英汉字典模糊查询系统构建一个机器学习模型。

该模型实现了对用户的检索习惯进行分析,提取用户检索数据中的有趣模式,并通过统计频度对模式集进行自动优化,为用户的模糊查询提供智能化的查询结果。

釷鹆資贏車贖孙滅獅赘。

关键词:

机器学习模型,动态规划,模糊查询

FuzzyqueryofanEnglish-Chinesedictionarybasedonmachine

learning怂阐譜鯪迳導嘯畫長凉。

SuJiahui

Schoolofinformationscienceandtechnology,ZhanjiangNormalUniversity,Zhanjiang,524048China

谚辞調担鈧谄动禪泻類。

Abstract:

Basedonthemachinelearningtheory,amodelofthefuzzyqueryofanEnglish-Chinesedictionarysystem,whichisfulfilledbythedynamicprogrammingalgorithmisgiven.Themodelanalysestheuser'fuszzyquerydataandfindsouttheconnectionsbetweenthedata,recordingtheminingmodels,appliesthemtothefuzzyquerysetduringanon-accuratesearching,andautomaticallyimprovestheminingmodelssetaccordingtothestatisticsatfrequenciesofuser,providingintelligentsolutionsforthefuzzyquery.嘰觐詿缧铴嗫偽純铪锩。

Keywords:

Machinelearning;dynamicprogrammingalgorithm;fuzzyquery;熒绐譏钲鏌觶鷹緇機库。

1引言

1.1研究背景及其意义

机器学习是现代人工智能研究、发展的重要领域,它通过研究计算机如何模拟或实现人类的学习行为,通过分析、归纳、综合建立人类学习过程的计算模型或认识模型,基于已有数据识别复杂模式,做出智能化的决策,并将其应用于实际问题中,为解决问题提供可行决策和方案支持[1]。

自1980年在卡内基梅隆大学召开第一届机器学习研讨会以来,机器学习的研究工作发展迅猛,

已成为人工智能领域研究的中心课题之一。

随着机器学习的蓬勃发展,人们在工作中累积了大量可供测试算法的数据集或者超大数据集,机器学习工作者在此基础上可以进行更精准的研究。

目前机器学习已经广泛应用于智能搜索、数据分析等领域,如许多大型的搜索引擎网站的智能化的用户体验都是基于机器学习等研究成果实现的。

在大数据时代,机器学习研究将会得到更大的发展。

鶼渍螻偉阅劍鲰腎邏蘞。

1.2研究内容和目标

研究机器学习模型的生成过程,构建机器学习的模型,将其应用到英汉字典模糊查询中。

第2节介绍机器学习和模糊查询中的基本思路和实现方法,第3节具体介绍算法实现的设计

和数据的处理,第4节编码实现构想,第5节通过一些测试用例验证、完善算法的基本功能,最后一节对本研究做出总结并提出新展望。

纣忧蔣氳頑莶驅藥悯骛。

2研究与实现中的关键技术

2.1机器学习的基本原理

机器学习是从已有或动态的数据中提取有用的新知识[2],并将其应用到问题的决策中,其基

本过程为:

1.收集学习材料,即获取的数据;

2.分析数据,从中提取有趣的模式;

3.基于数据分析获取有趣的模式,生成知识库,制定决策;

4.通过学习新知识检验知识库数据的有效性,修改、完善知识库。

在步骤1中获取的知识是原始的数据或材料,他们看起来可能是杂乱无章的,因此在步骤2需要对数据进行分析,挖掘复杂的隐藏的模式,使用朴素的贝叶斯分类、噪声处理等方法对数据进行分离、提取,然后在将来的决策(步骤3)中使用这些模式去提供方案。

但是提取出来的模式也可能是无效的,这就需要步骤4不断地学习新的知识,判定模式是否有效,修改完善知识库。

颖刍莖蛺饽亿顿裊赔泷。

2.2有趣模式的提取

如何从原始数据中提取有用的模式,挖掘那些隐藏的有趣知识?

分类是数据分析的一种重要的形式,通过它可以提取重要的数据类型。

分类首先要基于现有数据建立一个分类模型,然后根据模型对数据进行分类。

分类模型有决策树分类器、贝叶斯分类器和基于规则的分类器等[3]。

驂膽閉驟羥闈詔寢賻。

在英汉字典模糊查询系统,使用的是基于规则的分类器--形如IF-THEN的分类器。

规则的IF

部分是前提条件,THEN部分是结论。

假如用户的某些输入满足特定的条件则可认为是有趣模式。

一般情况下,如果用户本次输入的数据在上一次模糊查询的结果集中,则可认为上一次为用户提供的结果集中的对应项是有趣的。

如果不满足这一条件则可认为上一次的模糊结果集对用户没有

帮助,即为无效数据,丢弃之。

英汉字典模糊查询系统的规则分类器实现大体如下:

銚銻縵哜鳗鸿

锓謎諏涼。

本次是否为精确查询?

本次输入在上一次模糊结果集中?

非有趣模式

有趣模式非有趣模式

图2.1规则分类器的实现

2.3有趣模式集的优化

有趣模式集中的记录都是用户感兴趣的,但是对于一个非精确的输入可能存在多个用户感兴

趣的选择项,如何确定最优的选择项呢?

在统计学上,使用概率表示一件事情在大量测试下发生

的可能性⑷。

假设A代表用户的一个模糊输入,Xi,…,Xi代表A输入所对应的用户感兴趣的选择项,设p(A|Xi)为用户输入A后选择Xi的概率,分别计每一个选择项Xi的p(A|X)将具有最

大值的选择项排在最前面,即为最优的选择项。

用户每次输入A后选择Xi都是对A—Xi模式的

一次强化。

p(A|Xi)=n(Xi)/n(A),在该式中n(Xi)表示Xi被选择的次数,n(A)表示输入A的总次数,对于计算A的所有选择项的p(A|Xi),分母都是相同的,因此在具体的实现中,只需要为每一个选择项项添加一个频度计数,这样具有最大频度计数的选择项即为最优的选择项。

挤貼綬电麥结鈺贖

哓类。

2.4使用动态规划的最长公共子序列

动态规划⑸采用自底向上的递推求值,把中间的结果存储起来并用于后面的计算,对于改善

蛮力搜索的时间复杂度是比较有效的,假设a[n],b[m]分别表示长度为n,m的两个字符串,则

a[0],…,a[n-1]中的任意组合表示a的子序列,b[0]…b[m-1中的任意组合表示b的子序列,如果要求这两个字符串的最长公共子序列,采用简单的线性规划的方法是:

列举a的所有所有2的n次方

个子序列,察看它与b[m]的最长公共子序列长度,采用这种方法的时间复杂度是指数级的0(n^2),如果采用动态规划的方法可以使解决最初公共子序列问题优化到O(nlogn)。

假设L[n][m]表示

a的前n个字符与b的前m个字符之间的最长公共子序列长度,则L[n][m]的递推公式如下:

赔荊紳谘侖驟辽輩袜錈。

LCSflag初始值为0,用于标记当n或m为0时,前面是否有a的子序列与b的子序列相等的情况。

对于n=0或m=0,若a[n]=a[m],贝UL[n][m]=LCSflag=1,如果a[n]!

=a[m],若LCSflag=1贝U,L[n][m]=1,否则L[n][m]=0;塤礙籟馐决穩賽釙冊庫。

对于n和m都不等于0的情况:

若a[n]=b[m]则L[n][m]=L[n-1][m-1]+1;若a[n]!

=b[m]则L[n][m]={L[n-1][m]和L[n][m-1]中的最

大值}。

裊樣祕廬廂颤谚鍘羋蔺。

3系统设计

3.1总体结构

系统的主要功能包括以下部分

1.用户输入

接收用户输入的单词或词组,它们可能是精确的输入,也可能是存在拼写错误的单词或词组,如"department”和"deparmen”等。

仓嫗盤紲嘱珑詁鍬齊驚。

2.精确查询在字典的索引文件中查找查看是否存在,如果存在,则去词库的译义文件中读取,并将结果

输出给用户。

3.一般模糊查询

如果通过精确查找无法查出该单词/词组,这种可能是由于单词的单复数,动词过去式,现在

分词的ing形式类等造成,因此一般模糊查询就是对以上形式的单词进行简单的处理,如去掉词尾的’s''d'等,然后再对处理之后的单词进行精确查询。

绽萬璉轆娛閬蛏鬮绾瀧。

4.基于最长公共子序列的模糊查询(以下简称les查询)

如果基于一般模糊查询仍无法查出,则使用lcs查询,该查询是基于全文的检索,找出与输

入单词最为相近的单词,即与输入单词的最长公共子序列是在全文中的最大值的单词,并将其作为选择项输出给用户。

骁顾燁鶚巯瀆蕪領鲡赙。

5.机器学习的模块

开始时候,用户的使用记录为空。

在一次les查询之后,可以将les模糊查询的结果集记录起来,如果用户下一次查询的输入与les模糊查询的结果集记录有匹配项,则认为它们是一个有趣模式,并把其加入到有趣模式集中。

每一次模糊查询给用户输出的结果集都会与模式结果集中的结果进行匹配,如果找到,则把模式结果集中的匹配数据与模糊结果集,匹配数据优先放到结果集前,去除重复的项,生成最终结果集(决策),最后输出给用户。

瑣钋濺暧惲锟缟馭篩凉。

3.2业务流程设计

系统的业务流程如下:

图3.1业务流程图

3.3数据结构设计

3.3.1宏定义

宏定义

含义

#defineWORDCOUNT59372

词库中单词的个数

#defineWORDLEN24

单词的取大长度

#defineError(msg){perror(msg);eXit

(1);}

出错处理

#definePRENUM5

对于每个用户输入可以提取的有效模式的最

大个数

3.3.2结构体

1.单词索引记录

typedefstruct{

charword[WORDLEN];

intoffset;

intlength;

}Node;

其中word表示单词,offset是该单词在词库文件中的索引,length是该单词的释义的长度

2.用户的偏好记录typedefstruct{

charword[WORDLEN];

intcount;

}Preference;

其中word表示用户偏好的单词,count是该单词的的支持度计数,即在用户的输入中该单词被选中的频数。

鎦诗涇艳损楼紲鯗餳類。

3.模式记录集typedefstruct{

charinput[WORDLEN];//用户输入的单词

Preferencepres[MAXPRES];//最多记录5个偏好

}Record;

其中input是用户的非精确单词,pres是该单词对应的用户偏好单词数组,最多5个记录。

3.3.3文件

1.单词的索引文件star.ndx

存放的是一个个Node类型的数据,每个单词/词组都有一个对应的Node,这些数据按照单词的英文次序升序排列,因此在查找单词时可使用二分查找快速检索。

栉缏歐锄棗鈕种鵑瑶锬。

2.词库文件star.dict

存放单词的释义

3.用户输入记录文件search.dat存放用户输入的非精确单词,及该单词对应的lcs模糊查询结果集

4.模式记录文件record.dat存放的是有趣模式记录,这些记录也是按用户的输入非精确单词升序排序,这样方便在进行记录查找时使用二分查找,快速的查询某一记录是否存在,在记录的内部是按照模式的有效次数降序按序的。

辔烨棟剛殓攬瑤丽阄应。

4实施应用

4.1开发环境

4.1.1硬件平台

CPU:

i5-4200h2.8GHz;

内存:

256MB及以上。

4.1.2软件平台

操作系统:

Windows虚拟机VMware10.0下的ubuntulinux。

开发工具:

gcc,vim

4.2开发环境的搭建和配置

1.安装vim

|在linux终端输入sudoapt-getinstallvim-gtk,然后输入root用户密码等待完成vim工具的安装峴扬爛滾澗辐滠兴渙藺。

2.vim的基本配置

|在linux终端输入vi~/.vimrc按如下方式配置

setnu

setts=4

setsw=4

setcindent

setautoident

3•环境变量的设置

在终端输入vi~/.bashrc

添加以下行:

exportPATH="$PATH:

./"

保存之后在命令行输入source.bashrc

4.3编写代码

4.3.1最长公共子序列长度核心代码

intLCS(char*a,char*b)

{

intn,m,i,j;

intflag=0;

n=strlen(a)-1;

m=strlen(b)-1;

intL[100][100]={0};

for(i=0;i<=n;i++)

{

if(flag||(a[i]==b[O]))

{

L[i][0]=1;

flag=1;

}

elseL[i][0]=0;

}

flag=0;

for(j=0;j<=m;j++)

{

if(flag||(a[0]==b[j]))

{

L[0][j]=1;

flag=1;

}elseL[0][j]=0;

}

//chara[100],b[100];

for(i=1;i<=n;i++)for(j=1;j<=m;j++)

{

if(a[i]==b[j])

L[i][j]=L[i-1][j-1]+1;

elseif(L[i][j-1]>=L[i-1][j])

L[i][j]=L[i][j-1];

else

L[i][j]=L[i-1][j];

}

returnL[n][m];

}

4.3.2机器学习模型的c语言实现

1.在learn.h中的定义

用户偏好的最大个数单词最大长度有效模式的个数

#ifndef_LEARN_H#define_LEARN_H#include"dict.h"#include#include#include#defineMAXPRES5//#defineWORDLEN24//#definePRENUM5//typedefstruct{

charword[WORDLEN];//用户偏好intcount;//次数

}Preference;

typedefstruct{

charinput[WORDLEN];//用户选择项

Preferencepres[MAXPRES];//最多记录5个偏好

}Record;

//intRecordsize=sizeof(Record);//一个记录的大小voidRecordData(char*word,Node*nodes);

voidNewRecord(char*word,char*match_word);

voidAnalyse(char*word);

voidSolution(char*newData,Node*nodes);

voidDecision(Node*dst_node,Node*src_node);

//用于快速查找查询记录或对记录快排

intRecordcmp(constvoid*dst,constvoid*src);

intPrescmp(constvoid*dst,constvoid*src);

#endif主要函数解释:

RecordData:

用于记录用户每次输入的非精确单词及其使用lcs模糊查询得到的结果集。

Analyse:

分析用户的输入和lcs模糊结果集间的关系,提取有趣模式。

NewRecord:

记录有趣模式。

Solution:

提取与用户输入的非精确单词相关的模式记录。

Decision:

根据历史模式记录,生成最终的决策方案。

2.在learn.c中主要函数的实现

voidRecordData(char*word,Node*nodes)

{//word代表用户的输入,nodes是模糊查询的结果集

FILE*fd=fopen("./search.dat","w+b");//打开并清空上一次的结果

if(!

fd)

return;

intnode_len=0;

intlen=strlen(word);fwrite(&len,sizeof(int),1,fd);fwrite(word,1,len,fd);

while(strlen(nodes[node_len].word)>0)

node_len++;fwrite(&node_len,sizeof(int),1,fd);fwrite(nodes,sizeof(Node),node_len,fd);fclose(fd);

}

intRecordcmp(constvoid*dst,constvoid*src)

{

Record*d=(Record*)dst;

Record*s=(Record*)src;

returnstrcmp(d->input,s->input);

}

//对用户偏好按降序排序

intPrescmp(constvoid*dst,constvoid*src)

{

Preference*d=(Preference*)dst;

Preference*s=(Preference*)src;

return(d->count)<(s->count);

}

voidNewRecord(char*word,char*match_word)

{

FILE*fd=fopen("./record.dat","a+b");

if(!

fd)

return;

intRecordCount=0;;

Record*matched=NULL;

charch;

fseek(fd,0,SEEK_SET);

fread(&ch,1,1,fd);

if(ch==EOF)//即初始状态,空文件

{

RecordCount=1;fseek(fd,0,SEEK_SET);fwrite(&RecordCount,sizeof(int),1,fd);

RecordnewRcd={0};strcpy(newRcd.input,word);strcpy(newRcd.pres[0].word,match_word);newRcd.pres[0].count=1;fwrite(&newRcd,sizeof(Record),1,fd);

//checkthefirstrecord

fclose(fd);

return;

}

else{

fseek(fd,0,SEEK_SET);fread(&RecordCount,sizeof(int),1,fd);

詩叁撻訥烬忧

Record*records=(Record*)malloc((RecordCount+1)*Recordsize);毀厉鋨骜。

fread(records,Recordsize,RecordCount,fd);

fclose(fd);

//a+模式从文件头读,从文件尾写

matched=(Record*)bsearch(word,records,RecordCount,Recordsize,Recordcmp);则鯤愜韋瘓賈晖园栋泷。

//是已有记录if(matched!

=NULL)

{

intnum=0,i;//用于标识是否找到while(strlen(matc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1