下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、C+課設(shè)-簡單字符串編碼與余弦相似度計算系統(tǒng)生成特征空間的核心:采用“字母一下標(biāo)一下標(biāo)”的方法生成編碼。按照一般方法來講,在處理操作中,對于每個字符串都需要遍歷并對遇到的每個字符進行操作,由于需要檢索aphb數(shù)組所帶來的復(fù)雜度是O(N);這里采用的方法是先使用map建立字符與位置間的映射,之后加入中間數(shù)組vectorTemp用來存儲相應(yīng)位置元素的頻數(shù),那么生成特征空間的操作就可以變?yōu)橐痪湓挘篺or(inti=0;ilen;i+)TempFeatureSpacestri+;T=FeatureSpacestri是當(dāng)前字符到位置的映射,那么TempT就是當(dāng)前元素所在位置的頻數(shù)了。這種通過下標(biāo)引用的方
2、法理論復(fù)雜度為0(1),但是實際中因為使用了map,而map內(nèi)部也進行了復(fù)雜度為O(IgN)的查找操作,因此實際的復(fù)雜度應(yīng)該為O(1TgN),即O(lgN)。代碼:#include#include#include#include#include#include#include#include#includeusingnamespacestd;classAlphabet存儲字典序private:charch;intvalue;public:Alphabet。ch=a;value=0;Alphabet(charch,intval);charGetCharact()const;intGetValue
3、()const;voidAddValue();booloperator(Alphabet&T);classStringEncodingprivate:vectoraphb;vectorString;mapvchar,intFeatureSpace;public:StringEncoding();voidReadFromFile(constchar*fileName);voidWriteToFile(constchar*fileName);voidSearchFromFile(conststringstr,intkey);doubleCountCosine(vectorTemp,vectortt
4、);voidAlphaSort();voidRebuildCoding();按權(quán)重新生成英文字母編碼;classManager管理類private:StringEncodingss;stringSearchString;public:Manager(stringSearchString=none);voidCall();調(diào)用;intmain()Managermm(none);mm.Call();system(pause);return0;return0;boolAlphabet:operator(Alphabet&T)returnvalueT.GetValue()?true:false;cha
5、rAlphabet:GetCharact()constreturnch;intAlphabet:GetValue()constreturnvalue;Alphabet:Alphabet(charch,intval):value(val)this-ch=ch;voidAlphabet:AddValue()value+;StringEncoding:StringEncoding()voidStringEncoding:AlphaSort()intSize=aphb.size();for(inti=0;iSize;i+)for(intj=0;japhbj)AlphabetT;T=aphbj;aphb
6、j=aphbj+1;aphbj+1=T;voidStringEncoding:ReadFromFile(constchar*fileName)fstreamfile_in;tryfile_in.open(fileName,ios:in|ios:out);if(!file_in)throwFileOpenError!;catch(constchar*Warning)coutWarningbuf)逐個字符串讀取intlen=buf.length();for(inti=0;ilen;i+)if(!flag)aphb.push_back(Alphabet(bufi,1);flag=1;elseintm
7、ark=0;for(vector:iteratorit=aphb.begin();it!=aphb.end();it+)for(vector:iteratorit=aphb.begin();it!=aphb.end();it+)if(it-GetCharact()=bufi)mark=1;it-AddValue();if(!mark)aphb.push_back(Alphabet(bufi,1);flag+;String.push_back(buf);file_in.close();voidStringEncoding:WriteToFile(constchar*fileName)將Strin
8、g中的字符串按照特征空間的字典寫入到另一個文件fstreamfile_out1,file_out2;tryfile_out2.open(dictionary.txtios:app);file_out1.open(fileName,ios:app);if(!file_out1|!file_out2)throwWriteToFileError!catch(constchar*Warning)coutWarningendl;system(pause);exit(0);解析字符串for(vector:iteratorit=String.begin();it!=String.end();it+)cons
9、tintSize=aphb.size();vectorTemp;Temp.resize(Size);stringstr=*it;intlen=str.length();for(inti=0;ilen;i+)TempFeatureSpacestri+;核心:字母-下標(biāo)-下標(biāo)file_out1str+:;for(inti=0;iSize;i+)file_out1Tempi;file_out1endl;for(vector:iteratorit=aphb.begin();it!=aphb.end();it+)file_out2GetCharact()(char*):GetValue()endl;fi
10、le_out1.close();file_out2.close();voidStringEncoding:SearchFromFile(conststringstr,intkey)先把str按字典序轉(zhuǎn)化為對應(yīng)編碼if(key=2)fstreamfile_in;stringfileName=file_out.txt;tryfile_in.open(fileName,ios:in|ios:out);if(!file_in)throwFileOpenError!;catch(constchar*Warning)coutWarningbuf)逐個字符串讀取if(str+:)=buf)flag=1;br
11、eak;if(flag)for(inti=buf.length();iline.length();i+)coutlinei;coutendl;break;if(!flag)cout喳無此字符串或其編碼!endl;file_in.close();elsedoublemax=-1;stringmaxString=null;intflag=0;控制開關(guān)vectorvec;下面先計算指定字符串的編碼vectortt;intlen=str.length();constintss=aphb.size();tt.resize(ss);for(inti=0;ilen;i+)trttFeatureSpacest
12、ri+;cout輸入的字符串編碼為:;for(inti=0;iss;i+)couttti;coutendl;for(vector:iteratorit=String.begin();it!=String.end();it+)constintSize=aphb.size();vectorTemp;Temp.resize(Size);stringstr=*it;intlen=str.length();for(inti=0;imax)vec.clear();max=ans;maxString=*it;vec=Temp;cout最近字符串的余弦相似度為:(double)maxendl;cout最相似的
13、字符串為:maxStringendl;cout編碼為:;for(inti=0;ivec.size();i+)coutveci;voidStringEncoding:RebuildCoding()AlphaSor();intSize=aphb.size();for(inti=0;iSize;i+)/重新生成新的字典序并存放于特征空間中FeatureSpaceaphbi.GetCharact()=i;doubleStringEncoding:CountCosine(vectorTemp,vectortt)intss=aphb.size();doublecos=0;for(inti=0;iss;i+)cos+=Tempi*tti;doubledeno1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 居民健康檔案管理培訓(xùn)
- 數(shù)控車削加工技術(shù) 課件 項目四 數(shù)控車削仿真加工
- 四川省成都市西藏中學(xué)2024-2025高一(1-5班)10月月考?xì)v史試卷 - 副本
- 黑龍江省綏化市海倫市第三中學(xué)2023-2024學(xué)年九年級上學(xué)期期中考試化學(xué)試卷(含解析)
- T-ZFDSA 01-2024 當(dāng)歸生姜羊肉湯制作標(biāo)準(zhǔn)
- 江蘇省泰州市姜堰區(qū)2024-2025學(xué)年七年級上學(xué)期11月期中考試數(shù)學(xué)試題(無答案)
- 算法工程師面試真題單選題100道及答案解析
- 人教版PEP(2024)三年級上冊《Unit 6 Useful numbers》Part A第2課時-教學(xué)課件
- 日常生活活動能力訓(xùn)練版
- 圪柳溝安全生產(chǎn)責(zé)任制
- 2024-2025學(xué)年七年級上學(xué)期數(shù)學(xué)期中模擬試卷(蘇科版2024)(含答案解析)
- 海爾智家財務(wù)報表分析報告
- 人教版八年級歷史上冊第一學(xué)期期中綜合測試卷( 2024年秋)
- 教師績效考核綜合評價表.doc
- 鐵路工程預(yù)算定額工程量計算規(guī)則使用說明
- 投標(biāo)書標(biāo)準(zhǔn)格式
- 殘疾人的心理輔導(dǎo)方案計劃
- 副校長年度考核評語
- 民航飛機維修措施與成本分析
- 結(jié)構(gòu)件防腐蝕生產(chǎn)質(zhì)量控制要求DKBA04000050B匯編
- 新華書店施工組織設(shè)計(完整版)
評論
0/150
提交評論