劉 欣
(海軍工程大學(xué)軍隊裝備經(jīng)濟(jì)信息研究室 武漢 430033)
?
基于自然語言識別技術(shù)的裝備財務(wù)信息管理系統(tǒng)應(yīng)用研究
劉 欣
(海軍工程大學(xué)軍隊裝備經(jīng)濟(jì)信息研究室 武漢 430033)
論文采用自然語言識別技術(shù)對已經(jīng)存在的不同裝備財務(wù)信息管理系統(tǒng)中的單位名稱進(jìn)行分析,剖析其規(guī)律,并在此基礎(chǔ)上對現(xiàn)有自然語言識別技術(shù)進(jìn)行算法改進(jìn),提取不同系統(tǒng)的相同單位名稱信息,以達(dá)到系統(tǒng)之間單位相關(guān)數(shù)據(jù)信息相互轉(zhuǎn)換的要求。最后采用C#實現(xiàn)改進(jìn)算法,并通過實驗數(shù)據(jù)檢驗改進(jìn)算法的效果。
自然語言識別; 裝備財務(wù); 信息管理
Class Number TP391
軍隊財務(wù)信息管理所涉及的業(yè)務(wù)管理軟件系統(tǒng)很多,這些系統(tǒng)相互分離,系統(tǒng)之間數(shù)據(jù)不能共享或轉(zhuǎn)換,但在目前的管理體制下,集中開發(fā)統(tǒng)一的軟件還沒有可行性。每個軟件系統(tǒng)都要重復(fù)錄入大量數(shù)據(jù),浪費(fèi)了人力資源和物質(zhì)資源,降低了軍隊財務(wù)管理工作效率,更重要的是制約了全軍裝備財務(wù)實現(xiàn)網(wǎng)絡(luò)化、信息化的發(fā)展步伐。為進(jìn)一步加強(qiáng)全軍裝備財務(wù)信息化建設(shè),在現(xiàn)有軟件及業(yè)務(wù)工作流程的基礎(chǔ)上,研究不同軟件系統(tǒng)數(shù)據(jù)和數(shù)據(jù)之間的關(guān)系,尋找其內(nèi)部聯(lián)系,進(jìn)行智能的轉(zhuǎn)換,是解決數(shù)據(jù)共享比較好的思想。
在現(xiàn)有的裝備財務(wù)業(yè)務(wù)管理所涉及許多軟件系統(tǒng)中,都存在著彼此相關(guān)信息。特別是許多系統(tǒng)都是基于單位來進(jìn)行數(shù)據(jù)的錄入和匯總,也就是說系統(tǒng)中的數(shù)據(jù)是與單位相關(guān)的,要進(jìn)行數(shù)據(jù)融合就必須進(jìn)行單位的對應(yīng),如果希望把不同系統(tǒng)的數(shù)據(jù)進(jìn)行融合,必須解決系統(tǒng)之間的單位信息匹配問題。由于不同的系統(tǒng)中單位的內(nèi)碼和層次碼不同,按照編碼對單位信息進(jìn)行匹配識別是不現(xiàn)實的,目前通用做法是人工通過單位名稱識別判別后進(jìn)行關(guān)聯(lián)標(biāo)注。但在單位較多的情況下,通過人工對單位名稱識別的方法工作量很大。按照傳統(tǒng)的單純通過單位編碼和單位名稱進(jìn)行比對的方法進(jìn)行判別是不能滿足需要的。必須采用新技術(shù)新方法進(jìn)行單位判別來實現(xiàn)數(shù)據(jù)轉(zhuǎn)換要求。
裝備財務(wù)軟件系統(tǒng)中的單位信息包括識別碼、層次碼和名稱。識別碼是單位信息唯一標(biāo)碼。層次碼是單位與單位之間的隸屬關(guān)系信息,名稱是單位的名稱。從上述的信息中可以看出不同系統(tǒng)中名稱是單位信息中關(guān)聯(lián)性最大的要素,但由于不同的裝備財務(wù)軟件系統(tǒng)由不同財務(wù)人員錄入,因錄入的習(xí)慣不同,單位信息中名稱的內(nèi)容差距也很大。如同一個單位在不同的系統(tǒng)可能被錄入成“163醫(yī)院”、“一六三醫(yī)院”、“163醫(yī)院”、“陸軍一六三醫(yī)院”、“陸軍第一六三醫(yī)院”、“解放軍陸軍第一六三醫(yī)院”等不同的名稱。人工很容易判別,但對于計算機(jī)自動判別就是很困難的事。
自然語言處理是計算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個重要方向,自然語言處理可以認(rèn)為是一種多學(xué)科交叉的語言文字的處理技術(shù),運(yùn)用自然語言處理技術(shù)可以發(fā)現(xiàn)語言文字所表達(dá)的“義”,通過分析這個“義”分析語句得到相關(guān)數(shù)據(jù)信息。
基于單位名稱判別的思想,采用了基于多層次特征的語句相似度度量方法綜合考察單位信息中名稱在詞形、句長及語序三個語言層次特征的相似度,合理擴(kuò)展了語句相似度的度量尺度。不僅考慮詞的局部相似性,還從單位名稱語句的整體出發(fā),宏觀考察單位名稱語句在整體上的相似情況,從而提高了相似度計算的性能,提高了單位信息自動、準(zhǔn)確判別的能力。不同單位名稱之間的貼近度高則判別為同單位的程度高。單位名稱判別的算法主要包含三部分:預(yù)處理、分詞過程和相似度計算過程[2]。
3.1 預(yù)處理
預(yù)處理是進(jìn)行單位名稱判別算法的第一步。它以國標(biāo)碼的存儲構(gòu)造作為區(qū)分漢字字符與非漢字字符的依據(jù),對待處理的單位名稱的文本進(jìn)行掃描。根據(jù)“163醫(yī)院”、“一六三醫(yī)院”、“163醫(yī)院”、“陸軍一六三醫(yī)院”、“陸軍第一六三醫(yī)院”、“解放軍陸軍第一六三醫(yī)院”這些可能出現(xiàn)情況,首先對數(shù)字進(jìn)行歸一化,即把單位中的所有數(shù)字變成使用英文數(shù)字字符表示。如:“解放軍陸軍第一六三醫(yī)院”可以轉(zhuǎn)變?yōu)椤敖夥跑婈戃姷?63醫(yī)院”;“163醫(yī)院”可以轉(zhuǎn)變?yōu)椤?63醫(yī)院”。
3.2 分詞過程
目前中文詞匯的切分技術(shù)主要有正向最大匹配算法與逆向最大匹配算法[1],都是根據(jù)中文詞典的匹配算法。所謂匹配算法就是從待切分中文短句中順序取出1~N字符來與已有的詞典比較,看看是否是一個詞,若是則匹配成功,將它放入詞隊列或數(shù)組中暫存,接著對中文短句中剩余的部分進(jìn)行匹配,直到全部切分完畢。若按照從左到右的順序進(jìn)行匹配即稱為正向最大匹配算法,而按照從右到左的順序則是逆向最大匹配算法。最大匹配算法的關(guān)鍵是要確保已掃描出的詞不是某個已存在詞的前綴,即掃描過程的最大化原則。在中文分詞技術(shù)方面,正向最大匹配算法與逆向最大匹配算法都是在分詞過程中普遍使用的匹配算法,在實際應(yīng)用中通常將兩者結(jié)合起來使用,可提高分詞結(jié)果的正確率。
單位名稱內(nèi)容相對簡單,不存在上下文關(guān)系,所以選取了較為簡單易實現(xiàn)的字符串匹配分詞技術(shù)。專業(yè)詞匯在單位名稱中起著相當(dāng)重要的作用,基本上構(gòu)成了單位名稱的判別點(diǎn),所以在分詞過程中專業(yè)詞匯切分要非常準(zhǔn)確。為滿足算法在時間效率上,同時對專業(yè)詞和非專業(yè)詞切分準(zhǔn)確性的要求,采用了逆向最大匹配的方法,根據(jù)專業(yè)詞典抽取專業(yè)詞。目前匹配分詞算法都比較成熟,現(xiàn)成的產(chǎn)品也比較多,此不是本文討論重點(diǎn),在后面的算法實現(xiàn)中,采用了現(xiàn)有的產(chǎn)品完成分詞過程。
3.3 短句相似度計算過程
單位名稱在一定程度上可以看成是一個短句,短句的相似度由詞形相似度、語句長度相似度、詞序相似度三者共同決定,其中起著主要作用是詞形相似度,其次是語句長度相似度,作用最小的是詞序相似度,根據(jù)這種思路,對不同相似度給予不同的權(quán)值,以提高短句相似度判斷的精度[3]。
(1)
式(1)中的SimWord(L,L′)表示單位名稱L和L′中相同的詞。由于任何單位名稱詞長度Len(L)和Len(L′)都大于等于單位名稱L和L′中相同的詞SimWord(L,L′),由此可知WordSim(L,L′)∈[0,1]。WordSim(L,L′)的值越大表示兩個單位名稱相同的詞越多,說明兩個單位越可能是相同單位。
根據(jù)專業(yè)知識可知,如果兩個系統(tǒng)的錄入單位名稱相同,則其長度亦應(yīng)相同。則單位名稱間的語句長度相似度LenSim(L,L′)由下式?jīng)Q定:
(2)
由于存在|Len(L)-Len(L′)|≤MaxLen(Len(L),Len(L′))的等式存在,可以得出LenSim(L,L′)∈[0,1]。LenSim(L,L′)的值越大說明兩個單位名稱的語句長度越相近,兩個單位越可能是相同單位。
詞序相似度是為了提高單位名稱盡可能一致性而設(shè)立的限制條件。假設(shè)單位名稱L和L′中均出現(xiàn)一次且只出現(xiàn)一次的詞的集合表示為OnceWord(L,L′);OnceWord(L,L′)中的詞在句子L中的位置序號構(gòu)成的向量表示Pfirst(L,L′),Pfirst(L,L′)中的分量對應(yīng)的詞在句子L′中的詞序排序生成的向量表示為Psecond(L,L′),Psecond(L,L′)各相鄰分量的逆序數(shù)表示為RevOrd(L,L′),則單位名稱L和L′的詞序相似度可表示如下:
(3)
式(3)中OnceWord(L,L′)>1,因此可以得出OrdernSim∈[0,1];當(dāng)OnceWord(L,L′)的值越大,說明兩個單位名稱相同的詞相對位置越靠近,即兩個單位名稱越相似。
通過對單位名稱的詞形相似度、語句長度相似度和詞序相似度的描述,則單位名稱L和L′之間的相似度Sim(L,L′)可表示為
Sim(L,L′)=A1WordSim(L,L′)+A2LenSim(L,L′)
+A3OrdernWord(L,L′)
(4)
其中A1,A2,A3為常數(shù),存在A1+A2+A3=1,由于WordSim(L,L′)、LenSim(L,L′)、OrdernWord(L,L′)的范圍都在0~1之間,所以Sim(L,L′)∈[0,1]。
雖然兩個單位名稱的相似度由詞形相似度、語句長度相似度、詞序相似度共同決定,但它們所起的作用是不同的。為了提高語句相似度,設(shè)定詞形相似度起決定作用,語句長度相似度起主要作用,詞序相似度起次要作用,所以有設(shè)定存在A1≥A2≥A3的關(guān)系,在實驗中取A1=0.80,A1=0.15,A3=0.05。
依據(jù)前面的算法描述,根據(jù)上述短語相似度的定義,用C#語言實現(xiàn)單位名稱相似度計算中的主要函數(shù),包括單位名稱預(yù)處理Word_YCL函數(shù)、計算詞形相似度WordSim函數(shù)、計算語句長度相似度LenSim函數(shù)、計算詞序相似度OrdernWord函數(shù)和短語相似度Sim函數(shù)。
private void Sim(object sender, EventArgs e)
{
//定義初始化分詞系統(tǒng)
Segment segment = new Segment();
//定義兩個單位名稱
String m_A = "解放軍陸軍一六三醫(yī)院";String m_B = "163醫(yī)院";
//單位名稱預(yù)處理
m_A = Word_YCL(m_A);m_B = Word_YCL(m_B);
//單位名稱分詞過程
ICollection
ICollection
//定義詞形相似度、語句長度相似度、詞序相似度的影響參數(shù)
Single A1 = 0.8F;Single A2 = 0.15F;Single A3 = 0.05F;
//計算語句相似度
Single Sim = A1 * WordSim(m_words_A, m_words_B) + A2 * LenSim(m_words_A, m_words_B) + A3 * OrdernWord(m_words_A, m_words_B);
System.Windows.Forms.MessageBox.Show("單位[" + m_A + "]和單位[" + m_A + "]的相似度為"+Sim + "。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information );
}
//單位名稱預(yù)處理
public static String Word_YCL(String m_A)
{
m_A = m_A.Replace("一", "1"); m_A = m_A.Replace("二", "2");
m_A = m_A.Replace("三", "3"); m_A = m_A.Replace("四", "4");
m_A = m_A.Replace("五", "5"); m_A = m_A.Replace("六", "6");
m_A = m_A.Replace("七", "7"); m_A = m_A.Replace("八", "8");
m_A = m_A.Replace("九", "9"); m_A = m_A.Replace("零", "0");
m_A = m_A.Replace("1", "1"); m_A = m_A.Replace("2", "2");
m_A = m_A.Replace("3", "3"); m_A = m_A.Replace("4", "4");
m_A = m_A.Replace("5", "5"); m_A = m_A.Replace("6", "6");
m_A = m_A.Replace("7", "7"); m_A = m_A.Replace("8", "8");
m_A = m_A.Replace("9", "9"); m_A = m_A.Replace("0", "0");
return m_A;
}
//計算詞形相似度
public static Single WordSim(ICollection
{
int m_Mix_Len = words_A.Count;
int SimWord=0;
if (m_Mix_Len > words_B.Count) { m_Mix_Len = words_B.Count; }
foreach (WordInfo wordInfo_A in words_A)
{
foreach (WordInfo wordInfo_B in words_B)
{
if (wordInfo_A.Word == wordInfo_B.Word)
{
SimWord = SimWord + 1;break;
}
}
}
return 1F * SimWord / m_Mix_Len;
}
//計算語句長度相似度
public static Single LenSim(ICollection
{
int m_Max_Len = words_A.Count;
if (m_Max_Len < words_B.Count) { m_Max_Len = words_B.Count; }
return 1F - 1F * (2 * m_Max_Len - words_A.Count - words_B.Count) / m_Max_Len;
}
//計算詞序相似度
public static Single OrdernWord(ICollection
{
int i=0;int j=0;
int SameWord_Count = 0;int Word_Ordern_Pos = 0;int OrdernWord_Count = 0;
int[] SameWord = new int[100];
foreach (WordInfo wordInfo_A in words_A)
{
Word_Ordern_Pos=0;
foreach (WordInfo wordInfo_B in words_B)
{
Word_Ordern_Pos=Word_Ordern_Pos+1;
if (wordInfo_A.Word == wordInfo_B.Word)
{
SameWord[SameWord_Count]=Word_Ordern_Pos;
SameWord_Count = SameWord_Count + 1;
break;
}
}
}
for (i=0;i if (SameWord[i] > SameWord[i+1]) { OrdernWord_Count = OrdernWord_Count + 1; } } switch (SameWord_Count) { case 0: return 0;break; case 1: return 1;break; default: return 1F-1F * OrdernWord_Count / (SameWord_Count-1); break; } } 通過對選取的“163醫(yī)院”、“陸軍第一六三醫(yī)院”、“63醫(yī)院”、“海軍163醫(yī)院”四個名稱進(jìn)行單位名稱相似度計算,結(jié)果與人工判斷的結(jié)果一致?!?63醫(yī)院”可能是“陸軍第一六三醫(yī)院”和“海軍163醫(yī)院”其中之一;“63醫(yī)院”不可能是“163醫(yī)院”、“陸軍第一六三醫(yī)院”和“海軍163醫(yī)院”其中之一;“陸軍第一六三醫(yī)院”和“海軍163醫(yī)院”不是同一家醫(yī)院。 表1 單位名稱相似度計算結(jié)果 短句相似度計算是單位名稱識別的重要技術(shù)方法,本文在對單位名稱特點(diǎn)分析的基礎(chǔ)上,對中文分詞技術(shù)中短句相似度計算方法進(jìn)行了必要的改進(jìn),在計算短句相似度時綜合考慮了短句的詞形、語句長度、詞序的相似度對單位名稱識別的重要程度設(shè)置不同的權(quán)值,使短句相似度計算達(dá)到最優(yōu)。經(jīng)實驗數(shù)據(jù)表明該算法能夠很好地解決單位名稱識別問題。雖然實驗環(huán)境下取得了較好的識別率,但在實際系統(tǒng)應(yīng)用中還有不足之處,在本算法的基礎(chǔ)上如能考慮到同義詞與近義詞的識別問題會達(dá)到更好的處理效果。 [1] 李玉紅,柴林燕,張琪.結(jié)合分詞技術(shù)與語句相似度的主觀題自動判分算法[J].計算機(jī)工程與設(shè)計,2010,(11):2663-2666. [2] 王常亮,滕至陽.語句相似度計算在FAQ中的應(yīng)用[J].計算機(jī)時代,2006(2):24-26. [3] 杜剛,王超.句子相似度計算模型的改進(jìn)[J].電腦知識與技術(shù),2008(36):2817-2818. [4] 宗成慶.統(tǒng)計自然語言處理[M].北京:清華大學(xué)出版社,2008. [5] 耿煥同,畢碩本.范例推理在網(wǎng)絡(luò)自動答疑系統(tǒng)中應(yīng)用[J].計算機(jī)工程與應(yīng)用,2008,44(3):31-33. [6] 陳黎明,王芳.網(wǎng)絡(luò)遠(yuǎn)程教育中答疑系統(tǒng)的研究現(xiàn)狀及發(fā)展趨勢[J].現(xiàn)代遠(yuǎn)程教育研究,2006,48(6):42-44. [7] 汪耿豪.基于FAQ的自動答疑系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機(jī)時代,2009(12):39-41. [8] 周法國,楊炳儒.句子相似度計算方法及其在問答系統(tǒng)中的應(yīng)用[J].計算機(jī)工程與應(yīng)用,2008,44(1):165-178. [9] 楊思春.一種改進(jìn)的句子相似度計算模型[J].電子科技大學(xué)學(xué)報,2006,35(6):956-959. [10] 崔恒,蔡東風(fēng),苗雪雷.基于網(wǎng)絡(luò)的中文問答系統(tǒng)及信息抽取算法研究[J].中文信息學(xué)報,2004,18(3):24-31. [11] 秦兵,劉挺,王洋,等.基于常見問題集的中文問答系統(tǒng)研究[J].哈爾濱工業(yè)大學(xué)學(xué)報,2003(10):1119-1182. Application of Equipment Financial Information Management System Based on Natural Language Recognition Technology LIU Xin (Military Equipment and Economic Information Research Room, Naval University of Engineering, Wuhan 430033) In this paper, the natural language recognition technology is proposed to analyse the department name in different equipment financial information management system. An improved algorithm based on the natural language recognition is presented to distill the similar department name from different system, for the purpose of information exchange between different system. The proposed algorithm is realized by C# in experimental evaluation, which demonstrate a remarkable improvement. natural language recognition, equipment finance, information management 2015年1月2日, 2015年2月25日 作者簡介:劉欣,男,碩士,副教授,研究方向:國防經(jīng)濟(jì)信息管理和計算機(jī)應(yīng)用。 TP391 10.3969/j.issn1672-9730.2015.07.0345 結(jié)語