十次服务开发v1.第9章_第1页
十次服务开发v1.第9章_第2页
十次服务开发v1.第9章_第3页
十次服务开发v1.第9章_第4页
十次服务开发v1.第9章_第5页
免费预览已结束,剩余27页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章-学习目标掌握Word2vec的使 人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。人工智能可以对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。1956Artificial ligence提1950-1970符号主义流派:专家系统占主1950:设计国际象棋程 的跳棋程序战胜人类高手(人工智能第一次浪潮1993:SVM模型 深蓝战胜象棋选手(人工智能第二次浪潮2006DNN(深度神经网络)2016:AlphaGO战胜围棋选手(人工智能第三次浪潮什么是机器P和U)的利用验来善(算机系统身的性。它是人工智能的,是使计算机具有智能的根本途径,应用遍及人工智能各域数据+机器学习算法=机器学有了学习算法我们就可以把经验数据提供给它,它就能基于这些数据产生模人工智能、机器学习、深度学习的机器学习是人工智能的一个分支,深度学习是实现机器学习的一种技术IK yzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IK yzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。2012版本中,IK实现了简单的分词歧义排除算法,标志着IK分词器从单纯的词典分词向创建工程引入依 编写代packagepackage importorg.wltea. importorg.wltea. yzer.core.Lexeme;importjava.io.IOException;publicclassTest{publicstaticvoidmain(String[]args)throwsStringtext="基于java语言开发的轻量级的中文分词工具包";StringReadersr=newStringReader(text);IKSegmenterik=newIKSegmenter(sr,true);Lexemelex=null;System.out.print(lex.getLexemeText()+"}}}IKSegmenter的第一个构造参数为StringReader类型。StringReader是装饰Reader的类,其用法是一个String字符串IKSegmenter的第二个构造参数userSmart为切分粒度true表示最大切分false表示最Lexeme单位需求:按照十次方划分的频道,分别在CSDN上抓取各类文章,并以分词形式保存,词之间用空格分隔。步骤修 mon模块的pom.xml,引入依 修 mon模块,创建分词工具packagepackageimportorg.wltea.importimportimport*publicclassIKUtil@parampublicstaticStringsplit(Stringcontent,StringsplitChar)throwsIOException{StringReadersr=newStringReader(content);IKSegmenterik=newIKSegmenter(sr,true);Lexemelex=null;StringBuildersb=newStringBuilder("");}return}} 的html剔除packageimport* publicclassHTMLUtilpublicstaticStringdelHTMLTag(StringStringregEx_script="<script[^>]*?>[\\s\\S]*?<\\/script>定义StringregEx_style="<style[^>]*?>[\\s\\S]*?<\\/style>定义StringregEx_html="<[^>]+>";//定义 Matcherm_script=p_script.matcher(htmlStr);htmlStr=m_script.replaceAll("");//过滤script Matcherm_style=p_style.matcher(htmlStr);htmlStr=m_style.replaceAll("");//过滤styleMatcherm_html=p_html.matcher(htmlStr);htmlStr=m_html.replaceAll(过滤htmlreturnhtmlStr.trim()}}修改tensquare_crwler模块,创建ArticleTxPipline,用于负责将爬取的内容存入文本文件packageimportorg.springframework.beans.factory.annotation.Value;importorg.springframew importorg.springframework.stereotype.Repository;importus.codecraft.webmagic.ResultItems;importimportus.codecraft.webmagic.pipeline.Pipeline;importutil.HTMLUtil;importimportimportjava.io.IOException;importjava.util.Map;importjava.util.UUID;*入库类(分词后保存为publicclassArticleTxtPipelineimplementsPipelineprivateStringprivateStringchannelId;//频道publicvoidsetChannelId(StringchannelId){this.channelId=channelId;}publicvoidprocess(ResultItemsresultItems,Tasktask)StringtitleresultItems.get("title");//Stringcontent=try{PrintWriterprintWriter=PrintWriterprintWriter=newPrintWriter(newFile(dataPath+"/"+channelId+"/"+UUID.randomUUID()+".txt"));printWriter.print(IKUtil.split(title+""+content,"}catch(FileNotFoundExceptione){}catch(IOExceptione){}}}在配置文件application.yml中添加配dataPath:修改ArticleTask类,新增爬取 和web的任packageimportcom.tensquare.crawler.pipeline.ArticleTxtPipeline;importcessor.ArticleProcessor;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.scheduling.annotation.Scheduled;importorg.springframew importimport*publicclassArticleTask//privateArticlePipelineprivateArticleTxtPipelineprivateRedisScheduler*爬取ai@Scheduled(cron="03810**?")publicvoidaiTask(){Spiderspider=Spider.create(newArticleProcessor()); }*爬取db@Scheduled(cron="201711**?")publicvoiddbTask(){Spiderspider=Spider.create(newArticleProcessor()); }*爬取web@Scheduled(cron="202711**?")publicvoidwebTask(){Spiderspider=Spider.create(newArticleProcessor()); }}创建模块tensquare_ai引 mon依赖,创建启动packagepackageimportimportorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.scheduling.annotation.EnableScheduling;publicclassAiApplicationpublicstaticvoidmain(String[]args){SpringApplication.run(AiApplication.class,args);}} mon创建文件工具类FileUtil importjava.io.*;importjava.util.List;*publicclassFileUtil@param@param@throwspublicstaticvoidmerge(StringoutFileName,List<String>inFileNames)throwsIOException{FileWriterwriter=newFileWriter(outFileName,false);for(StringinFileName:inFileNames){tryStringtxt=readToString(inFileName);}catch(Exception}}}查找 @parampublicstaticList<String>getFiles(Stringpath){List<String>files=newArrayList<String>();Filefile=newFile[]tempList=forinti0itempList.lengthiif(tempList[i].isFile()){//如果是文件}if(tempList[i].isDirectory()){//如果是文件夹files.addAllgetFiles(tempList[i].toString()));}}return}@parampublicstaticStringreadToString(StringfileName)throws{Stringencoding="UTF‐8";Filefile=newFile(fileName);Longfilelength=file.length();byte[]filecontent=newbyte[Value()];FileInputStreamin=newFileInputStream(file);returnnewString(filecontent,}}创建wordLibE:\\article.txtdataPath:创建服务publicclassWord2VecServiceprivateStringprivateString*publicvoidList<String>fileNames=FileUtil.getFiles(dataPath);try{}catch(IOExceptione){}}}创建任务类*publicclassTrainTaskprivateWord2VecService@Scheduled(cron="03016**?")publicvoidtrainModel(){ }}Deeplearning4j之(而非研究工具目的)所设计。Skymind是DL4J的商业支持机Deeplearning4j拥有先进的技术,以即插即用为目标,通过预设的使用,避免多余的配置,让非企业也能够进行快速的原型制作。DL4J同时可以规模化定制。

pom.xml在application.ymlvecModel:修改服务类Word2VecService,增加方法用于构建词向量packagecom.tensquare.ai.service;importcom.tensquare.ai.util.FileUtil;importorg.deeplearning4j.models.embeddings.loader.WordVectorSerializer;importorg.deeplearning4j.models.word2vec.Word2Vec;importorg.deeplearning4j.text.sentenceiterator.LineSentenceIterator;importorg.deeplearning4j.text.sentenceiterator.SentenceIterator;importorg.springframework.beans.factory.annotation.Value;importjava.io.File;importjava.util.List;CreatedbylghonpublicclassWord2VecServiceprivateStringprivateStringprivateString*publicvoid}*}}publicvoidbuild(){try{SentenceIteratoriter=newLineSentenceIterator(newWord2Vecvec=newnewFile(vecModel).delete();//删除WordVectorSerializer.writeWordVectors(vecvecModel);}catch(Exceptione){}}参数说明inWordFrequency是一个词在语料中必须出现的最少次数。本例中出现不到5次的词都不予学习。词语必须在多种上下文中出现,才能让模型学习到有用的特征。对于规模很大的语料库,理应提高出现次数的下限。iteraions是网络在处理一批数据时允许更新系数的次数。迭代次数太少,网络可能来不及学习所有能学到的信息;迭代次数太多则会导致网络定型时间变长。laerSize指定词向量中的特征数量,与特征空间的维度数量相等。以50个特征值表示的词会成为一个0中的点。 widwSie表示当前词与预测词在一个句子中的最大距离是多少 seed:用于随机数发生器。与初始化词向量有关iterate:告知网络当前定型的是哪一批数 让已配置好的网络开始定修改任务类packageimportcom.tensqu importcom.tensquare.ai.util.FileUtil;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.scheduling.annotation.Scheduled;importorg.springframew importjava.util.List;*publicclassTrainTaskprivateWord2VecService*@Scheduled(cron="03016**?")publicvoidmakeModel(){ }}神经网神经网络可以指向两种,一个是生物神经网络,一个是人工神经网一个神经元可以通过轴突作用于成千上万的神经元,也可以通过树突从成千上万的神经元接受信息。上级神经元的轴突在有电信号传导时释放出化学递质,作用于下一级神经元的树突,树突受到递质作用后产生出电信号,从而实现了神经元间的信息传递。化学递质可以使下一级神经元兴奋或抑制。人工神经网络:人工神经网络(AriiialNeualNewoks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(ConnecionModel),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。卷英文中的toconvolve词源为拉丁文convolvere,意为“卷在一起”。从数学角度说,卷积是指用来计算一个函数通过另一个函数时,两个函数有多少的积分。卷积可以视为 修改配置文件cnnModel:E:\\添加工具类CnnUtil(资源中提供*CNNpublicclassCnnUtil创建计算图(卷积神经网络@paramcnnLayerFeatureMaps卷积核的数量(=词向量维度@returnpublicstaticComputationGraph intvectorSize //intcnnLayerFeatureMaps=100; ComputationGraphConfigurationconfig=new)//.addLayer("cnn1"newConvolutionLayer.Builder()//.build(),.addLayer("cnn2",new.build(),.addLayer("cnn3",new.build(),.addVertex("merge",newMergeVertex(),"cnn1",

.build(),.addLayer("outnewOutputLayer.Builder()//.build(),ComputationGraphnet=newComputationGraph(config);return}@parampath@paramchildPaths@paramvecModelpublicstaticDataSetIteratorgetDataSetIterator(Stringpath,String[]childPaths,StringvecModel){WordVectorswordVectorsMap<String,List<File>>reviewFilesMap=newfor(StringchildPaths){reviewFilesMap.put(childPath,File(path+"/"+childPath}LabeledSentenceProvidersentenceProvider=newFileLabeledSentenceProvider(reviewFilesMap,newRandom(12345));returnnewCnnSentenceDataSetIterator.Builder()}publicstaticMap<String,Double>predictions(StringvecModel,StringcnnModel,StringdataPath,String[]childPaths,Stringcontent)throwsIOException{Map<String,Double>map=newComputationGraphmodel 通过n模型获取计算图对DataSetIteratordataSetINDArrayfeaturesFirstNegative=((CnnSentenceDataSetIterator)INDArrayList<String>labels=dataSet.getLabels();for(inti=0;i<labels.size();i++){map.put(labels.get(i)+"",}return}}创建服务类publicclassCnnServiceprivateStringdataPathprivateStringvecModel privateStringcnnModel;//*publicvoidtryComputationGraphnet String[]childPaths={"ai","db","web"};DataSetIteratordataSet=CnnUtil.getDataSetIterator(dataPath,childPaths,newFile(cnnModel).delete(); }catch(Exceptione){}}}修改任务类packageimportcom.tensqu impo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论