專利名稱:航空天氣報(bào)告的解碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及民航天氣報(bào)告分析技術(shù),具體涉及對(duì)民航氣象實(shí)況航空天氣報(bào)告的解 碼方法,屬于氣象資料處理以及氣象信息抽取領(lǐng)域。
背景技術(shù):
為了預(yù)測(cè)天氣,現(xiàn)代氣象技術(shù)必須依靠全球范圍內(nèi)實(shí)時(shí)的氣象信息。在這些氣象 信息中,一些氣象報(bào)告(例如,METAR報(bào)或者SPECI報(bào))為大量的氣象預(yù)測(cè)模型提供重要的數(shù) 據(jù)來源。航空例行天氣報(bào)告也即是METAR,它是由全世界成千上萬個(gè)觀測(cè)點(diǎn)每隔半個(gè)小時(shí)發(fā) 出一次,它提供了被觀測(cè)機(jī)場(chǎng)附近的氣象要素觀測(cè)值,例如溫度、風(fēng)、氣壓等。METAR報(bào)告是一種被世界氣象組織(WM0)和世界民用航空器組織(ICA0)共同規(guī)范 的編碼格式,盡管這種格式擁有全球標(biāo)準(zhǔn),但由于該標(biāo)準(zhǔn)比較寬松,在全世界范圍內(nèi),各氣 象組織的編碼仍然存在著各種的差異。一般來講,報(bào)告的解碼是由計(jì)算機(jī)來完成。報(bào)告編 碼的差異要求計(jì)算機(jī)必須具有較高的報(bào)文解碼能力。目前,大多數(shù)的解碼工具主要基于兩種方法,一種是逐詞分析,如果遇到錯(cuò)誤的 詞,則分解結(jié)束,這種解碼方法對(duì)于異常報(bào)文的識(shí)別率不高;另外一種是多次遍歷的方法, 這種方法雖然識(shí)別率較高,但是時(shí)間復(fù)雜度很高,因此,不適合于實(shí)時(shí)處理。基于上述方法 的解碼工具會(huì)出現(xiàn)問題,很多更有意義和價(jià)值的報(bào)文沒有被正確解碼或來不及解碼。因此, 需要一個(gè)更為完備的解碼方法來解決這樣的問題。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種能夠提高航空?qǐng)?bào)文分解有效性的航空天氣報(bào)告的解碼 方法,以解決現(xiàn)有報(bào)告分解的識(shí)別率和處理效率不能兼顧的問題。為實(shí)現(xiàn)上述目的,本發(fā)明的航空天氣報(bào)告的解碼方法步驟如下
(1)運(yùn)用有限狀態(tài)機(jī)的描述方式來構(gòu)造、表示航空天氣報(bào)告的語法結(jié)構(gòu),建立語法自動(dòng)
機(jī);
(2)根據(jù)航空天氣報(bào)告的電碼格式來構(gòu)造航空天氣報(bào)告中風(fēng)組、能見度組、云組、溫度 組、氣壓組的詞法結(jié)構(gòu),建立相應(yīng)的詞法自動(dòng)機(jī);
(3)輸入一段航空天氣報(bào)告;
(4)以“空格”為分隔符,將所輸入的航空天氣報(bào)告分割成各報(bào)文字符串,將得到的報(bào)文 字符串放入目標(biāo)字符串?dāng)?shù)組;
(5)建立多模匹配模型,將報(bào)告的語法結(jié)構(gòu)定義為基本結(jié)構(gòu)和次要結(jié)構(gòu),并將基本結(jié)構(gòu) 的字符串存儲(chǔ)構(gòu)成模式字符串?dāng)?shù)組;
(6)啟動(dòng)有限狀態(tài)機(jī),通過目標(biāo)字符串?dāng)?shù)組中的字符串與模式字符串?dāng)?shù)組中相匹配,實(shí) 現(xiàn)航空天氣報(bào)告解碼。進(jìn)一步的,所述步驟(5)之后,還設(shè)定回溯邊界C,該回溯邊界C代表當(dāng)某一個(gè)模式字符串找不到時(shí),向后移動(dòng)的距離,也是匹配失敗后,向前回溯的距離。進(jìn)一步的,所述步驟(1)語法自動(dòng)機(jī)中的各狀態(tài)對(duì)應(yīng)于航空天氣報(bào)告中包含的 識(shí)別組、風(fēng)、能見度、現(xiàn)在天氣、云、溫度、氣壓、補(bǔ)充信息,航空天氣報(bào)告的語法結(jié)構(gòu)描述如 下
<METAR>=METAR+<OBCC>+<OTime><ffind><Visibility><ww><Cloud><TemperatureXPr essure><0ther>,
或 <METAR>=METAR+<0BCC>+<0Time>+ "NIL",
此處NIL代表空?qǐng)?bào),如果報(bào)文有OTL,仍然認(rèn)為是合法報(bào)文,但是不作任何處理; 其中<WindXVisibility><ww><Cloud>=<Wind><Visibility><ww><Cloud> | "CAV0K”, CAV0K代表天氣現(xiàn)象良好,報(bào)文中有CAV0K的時(shí)候,可以沒有能見度(vi sibi 1 ity ),天氣現(xiàn) 象(ww),云組要素值(cloud); <ww>=<ww> | e , <0ther>=<0ther>| e 。進(jìn)一步的,所述步驟(2)中詞法自動(dòng)機(jī)中的各狀態(tài)對(duì)應(yīng)于語法自動(dòng)機(jī)中包含的風(fēng) 組、能見度組、云組、溫度組、氣壓組中一個(gè)字符串從初始狀態(tài)到結(jié)束狀態(tài)所經(jīng)歷的變換過程。進(jìn)一步的,所述步驟(4)中航空天氣報(bào)告的分割是先從輸入的航空天氣報(bào)告中查 找第一個(gè)分割詞;然后截取從當(dāng)前位置到分割詞的字符構(gòu)成一個(gè)字符串,將得到的字符放 入目標(biāo)字符串?dāng)?shù)組;從當(dāng)前位置繼續(xù)查找下一個(gè)分割詞,直到航空天氣報(bào)告結(jié)束。進(jìn)一步的,所述回溯邊界C是根據(jù)語法結(jié)構(gòu)來定義規(guī)范函數(shù),規(guī)范函數(shù)是一個(gè)以 語法結(jié)構(gòu)的層次為因變量的函數(shù),該規(guī)范函數(shù)的取值即是回溯邊界C,回溯邊界C代表當(dāng)模 式串和報(bào)文字符串進(jìn)行匹配的時(shí)候,匹配失敗的最大次數(shù)。進(jìn)一步的,設(shè)定回溯邊界C=k,則如果第一次匹配失敗,就判斷E[j+1]、 E[j+2]……E[j+k]和P[i]是否匹配。進(jìn)一步的,所述步驟(6)中對(duì)報(bào)告解碼,設(shè)回溯邊界C=2,P[i]為模式字符串?dāng)?shù) 組中第i個(gè)模式字符串,E[j]為目標(biāo)字符串?dāng)?shù)組中第j個(gè)目標(biāo)字符串,具體解碼步驟如下
a)用正則表達(dá)式來表示模式字符串?dāng)?shù)組中的字符串;
b)用第j個(gè)目標(biāo)字符串E[j]去匹配第i個(gè)P[i]模式字符串,其中;!力^;!,化/^爾;
c)如果匹配成功,則i++,j++,進(jìn)行目標(biāo)字符串?dāng)?shù)組和模式字符串?dāng)?shù)組中下一個(gè)字符 串的匹配;
d)若E[j]和P[i]不匹配,則判斷E[j+l]、E[j+2]和P[i]是否匹配,如果E[j+1]匹 配成功,則E[j]和E[j+1]交換位置,從E[j+1]和P[i+1]位置開始匹配,如果E[j+2]匹配 成功,則E[j]和E[j+2]交換位置,從E[j+1]和P[i+1]位置開始匹配,否則,跳過P[i]模 式,從P[i+1]和E[j]開始匹配;
e)重復(fù)步驟b)-c)或b)-d),直到目標(biāo)字符串?dāng)?shù)組或模式字符串?dāng)?shù)組結(jié)束,即i=n或
j=m。本發(fā)明的航空天氣報(bào)告的解碼方法中引入有限狀態(tài)機(jī),使運(yùn)用有限狀態(tài)機(jī)的描述 方式建立的航空例行天氣報(bào)告語法分析和詞法分析的結(jié)構(gòu)更加明確,提高了報(bào)告解碼的有 效性;建立航空天氣報(bào)告詞法結(jié)構(gòu)的好處如下使得報(bào)告經(jīng)過翻譯成詞法結(jié)構(gòu)之后,可以用計(jì)算機(jī)語言表述;詞法結(jié)構(gòu)和語法結(jié)構(gòu)較電碼結(jié)構(gòu)更容易理解;并且簡(jiǎn)化氣象報(bào)文相關(guān) 程序開發(fā)的復(fù)雜度。本發(fā)明在報(bào)告處理過程中,引入回溯算法,對(duì)異常報(bào)告具有較好的容錯(cuò)性,針對(duì) METAR報(bào)告,取C=2時(shí),報(bào)告識(shí)別率在95%以上;本發(fā)明所用算法的時(shí)間復(fù)雜度為C(Cn),因 此本發(fā)明的解碼方法具有較高的時(shí)間效率和誤碼糾正率。
圖1是本發(fā)明的原理框圖2是METAR航空天氣報(bào)告的語法結(jié)構(gòu)圖; 圖3是METAR航空天氣報(bào)告的風(fēng)組的詞法結(jié)構(gòu)圖; 圖4是METAR航空天氣報(bào)告的能見度組的詞法結(jié)構(gòu)圖; 圖5是METAR航空天氣報(bào)告的云組的詞法結(jié)構(gòu)圖; 圖6是METAR航空天氣報(bào)告的溫度組的詞法結(jié)構(gòu)圖; 圖7是METAR航空天氣報(bào)告的氣壓組的詞法結(jié)構(gòu)圖; 圖8是算法匹配所建立的多模模型圖; 圖9是自動(dòng)機(jī)解碼過程圖; 圖10是自動(dòng)機(jī)處理異常的過程圖; 圖11是匹配結(jié)果圖。
具體實(shí)施例方式本發(fā)明的航空天氣報(bào)告的解碼方法如圖1所示,該方法運(yùn)用有限狀態(tài)機(jī)的描述方 式,并根據(jù)航空天氣報(bào)告的電碼格式構(gòu)造出語法自動(dòng)機(jī)和詞法自動(dòng)機(jī);然后將報(bào)文輸入自 動(dòng)機(jī),查找出報(bào)文內(nèi)容中的多個(gè)模式字符串,識(shí)別報(bào)文中的氣象要素,并通過回溯處理進(jìn)行 報(bào)文糾錯(cuò);最后,進(jìn)行信息抽取來顯示多模匹配結(jié)果,實(shí)現(xiàn)對(duì)報(bào)文的解碼。本發(fā)明的航空天氣報(bào)告的解碼方法步驟如下
步驟1)運(yùn)用有限狀態(tài)機(jī)的描述方式來構(gòu)造、表示METAR報(bào)告的語法結(jié)構(gòu),建立語法自 動(dòng)機(jī),語法結(jié)構(gòu)如圖 2 所示;METAR 報(bào)告包含 METAR1, 0BCC2, 0TIME3, Wind4, Visibility5,
WW6, Cloud7, CAV0K8, Temperature9, PressurelO, Other 11, NIL 12,METAR 報(bào)告語法結(jié)構(gòu) 也可以描述成以下形式
<METAR>=METAR+<OBCC>+<OTime><ffind><Visibility><ww><Cloud><TemperatureXPr essure><Other>
在這些氣象要素中,某些要素是必需的,也有些要素是可以省略或者用另外的形式描 述,其中一些分支結(jié)構(gòu)例如〈Other〉、<ww>,也可以用下面的形式描述 <METAR>=METAR+<0BCC>+<0Time>+ “NIL”
<ffind><Visibility><ww><Cloud>=<ffind><Visibility><wwXCloud>|CAVOK 此處NIL代表空?qǐng)?bào),如果報(bào)文有OTL,仍然認(rèn)為是合法報(bào)文,但是不作任何處理; 其中<WindXVisibility><ww><Cloud>=<Wind><Visibility><ww><Cloud> | “CAV0K”, CAV0K代表天氣現(xiàn)象良好,報(bào)文中有CAV0K的時(shí)候,可以沒有能見度(vi sibi 1 ity ),天氣現(xiàn) 象(ww),云組要素值(cloud);<ww>=<ww> | e , <0ther>=<0ther>| e 。上述表示中OBCC代表航站代碼,OTime代表觀測(cè)時(shí)間,Wind、Visibi 1 ity、Cloud、 Temperature、Pressure分別代表風(fēng)、可見度、云、溫度、氣壓組信息;
步驟2)建立METAR報(bào)告風(fēng)組的詞法結(jié)構(gòu)如圖3所示,風(fēng)組要素的電碼格式如下所示
其中,
i、風(fēng)向3位數(shù)字或者VRB。ddd平均分向,以度為單位,向小于100度時(shí),前面必須加 0。00CT360度,分辨率10度,此處不判斷方向范圍;
ii、風(fēng)速2位或3位數(shù)字。前面可以加P,表示大于某一速度,風(fēng)向、風(fēng)速不明用///// 表不;
iii、重大風(fēng)速變化fmfm2位數(shù)字,前面可以加P,表示大于某一速度,可以省略;
iv、KMH、KT此處不換算為MPS的情況;
v、重大的風(fēng)向變化dndndn、dxdxdx分別3位數(shù)字,可以省略;
vi、風(fēng)向和最大風(fēng)速字段表示不明時(shí),可以用/////編報(bào)。建立風(fēng)組要素的詞法結(jié)構(gòu)如圖3所示,圖中有9個(gè)狀態(tài),一個(gè)字符串從開始狀態(tài)成 功到達(dá)結(jié)束狀態(tài),表示這個(gè)符串是一個(gè)風(fēng)組的詞語。圖2用于識(shí)別風(fēng)組的字符串。其中, <wind>為初態(tài),若在初態(tài)之下輸入“VBR”或者3位數(shù)字,轉(zhuǎn)入狀態(tài)1 ;在狀態(tài)1下輸入字符 “P”或者空,轉(zhuǎn)入狀態(tài)3 ;在狀態(tài)3下輸入2位或者3位數(shù)字,轉(zhuǎn)入狀態(tài)4 ;在狀態(tài)4下,輸入 字符“G”,轉(zhuǎn)入狀態(tài)5 ;輸入字符串“KMP”或“KT”或“MPS”,則轉(zhuǎn)入狀態(tài)6 ;在狀態(tài)5,輸入字 符“P”,則仍然在狀態(tài)5 ;在狀態(tài)6下,輸入3位數(shù)字,則轉(zhuǎn)入狀態(tài)7 ;在狀態(tài)7下,輸入字符 “V”,則轉(zhuǎn)入狀態(tài)8 ;在狀態(tài)8下,輸入3位數(shù)字,則轉(zhuǎn)入狀態(tài)9 ;狀態(tài)9直接轉(zhuǎn)入終態(tài)。步驟3)建立METAR報(bào)告能見度組的詞法結(jié)構(gòu)如圖4所示,能見度組要素的電碼格 式如下所示VVVVNDVVXVXVXVXDV
i、主導(dǎo)能見度4位數(shù)字。如果無觀測(cè),則編////;
ii、主導(dǎo)能見度方向NE、SE、SW、N、E、S、W、NDV可以省略;
iii、最小能見度4位數(shù)字??梢允÷?;
iv、最小能見度風(fēng)向NE、SE、SW、N、E、S、W、NDV可以省略;
建立能見度要素的詞法結(jié)構(gòu)如圖3所示。圖中有11個(gè)狀態(tài),一個(gè)字符串從開始狀態(tài)成 功到達(dá)結(jié)束狀態(tài),表示這個(gè)字符串是一個(gè)能見度組的詞語。其中,〈visibility〉為初態(tài),若 在初態(tài)之下,輸入“///”,則直接進(jìn)入終態(tài);如輸入1位數(shù)字,則進(jìn)入狀態(tài)3 ;如輸入4位數(shù) 字,則進(jìn)入狀態(tài)1 ;如輸入1或2位數(shù)字SM,則進(jìn)入狀態(tài)2 ;從狀態(tài)1直接進(jìn)入狀態(tài)8 ;狀態(tài)2 直接進(jìn)入狀態(tài)7 ;在狀態(tài)3下,若輸入1位數(shù)字,則進(jìn)入狀態(tài)4 ;在狀態(tài)4下,如輸入“/”,則 進(jìn)入狀態(tài)5 ;在狀態(tài)5下,如輸入“/”,則進(jìn)入狀態(tài)6 ;在狀態(tài)6下,若輸入“SM”,則進(jìn)入狀態(tài) 7 ;狀態(tài)7直接進(jìn)入狀態(tài)1 ;狀態(tài)8直接進(jìn)入狀態(tài)9 ;在狀態(tài)9之下,如輸入‘NDV’或‘NE’或 ‘SE,或‘SW,或‘NW,或‘N,或‘E,或‘S,或‘W,,則進(jìn)入狀態(tài)9 ;狀態(tài)9直接進(jìn)入終態(tài)。步驟4)建立METAR報(bào)告云組的詞法結(jié)構(gòu);云組要素的電碼格式如下所示
i、該組不可以省略,如果在3種描述方式中選擇垂直能見度+云狀進(jìn)行描述時(shí),云狀字 段可以省略,其中NsNsNs表示云量;垂直能見度用VVhshshs格式表示;SKC代表晴空。ii、NsNsNs為3位字符;hshshs3位數(shù)字;云狀3位字符;
iii、NsNsNs取值為:FEW(少云,1-2個(gè)八分量)、SCT (疏云,3-4個(gè)八分量)、BKN(多 云,5-7個(gè)八分量)、0VC (陰天,8個(gè)八分量),所述八分量是表示云占天空的比例。建立云組要素的詞法結(jié)構(gòu)如圖5所示圖中有8個(gè)狀態(tài),一個(gè)字符串從開始狀態(tài)成 功到達(dá)結(jié)束狀態(tài),表示這個(gè)字符串是一個(gè)云組的詞語。其中,<cloud>為初態(tài)。若在初態(tài)之 下,輸入“////”,則進(jìn)入終態(tài);輸入“SKC”或者“NSC”或者“NCD”,則進(jìn)入終態(tài);輸入“VV”, 則進(jìn)入狀態(tài)4 ;如輸入“FEW”或者“SCT”或者“BKN”或者“0VC”,則進(jìn)入狀態(tài)1。在狀態(tài)1之 下,如輸入3位數(shù)字,則進(jìn)入狀態(tài)2。在狀態(tài)2之下,若輸入“CB”或者“TCU”或者“///”,則 仍保留在狀態(tài)2。在狀態(tài)4之下,若輸入3位數(shù)字,則進(jìn)入終態(tài)。步驟5)建立METAR報(bào)告溫度組的詞法結(jié)構(gòu);溫度組要素的電碼格式如下所示 T’ T’ /T’ dT’ d
i、該組不可以省略
ii、為2位數(shù)字。前面加M表示負(fù)數(shù)
建立溫度要素的詞法結(jié)構(gòu)如圖6所示,圖中有6個(gè)狀態(tài),一個(gè)字符串從開始狀態(tài)成功到 達(dá)結(jié)束狀態(tài),表示這個(gè)符串是一個(gè)溫度的詞語。其中,〈Temperature〉為初態(tài)。在初態(tài)之下, 若輸入M,則進(jìn)入狀態(tài)1 ;如輸入2位數(shù)字,則進(jìn)入狀態(tài)3。在狀態(tài)3之下,如輸入“/”,則進(jìn) 入狀態(tài)4。在狀態(tài)4之下,若輸入“M”,則仍然保持在狀態(tài)4 ;若輸入2位數(shù)字,則狀態(tài)終態(tài)。步驟6)建立METAR報(bào)告氣壓組要素的詞法結(jié)構(gòu);氣壓組要素的電碼格式如下所 示
QPHPHPHPH
i、該組不可以省略
ii、Q表示Q或者A
iii、PHPHPHPH表示4位數(shù)字。則建立氣壓要素的詞法結(jié)構(gòu)如圖7所示,圖中有5個(gè)狀態(tài),一個(gè)字符串從開始狀態(tài) 成功到達(dá)結(jié)束狀態(tài),表示這個(gè)符串是一個(gè)氣壓組的詞語。其中,〈Pressure〉為初態(tài)。若在初 態(tài)之下,若輸入“A”,則進(jìn)入狀態(tài)1 ;若輸入“Q”,則進(jìn)入狀態(tài)2。在狀態(tài)1之下,若輸入4位 數(shù)字,則進(jìn)入狀態(tài)3。在狀態(tài)2之下若輸入4位數(shù)字,則進(jìn)入狀態(tài)3。狀態(tài)3直接進(jìn)入終態(tài)。步驟7)輸入一段民用航空天氣報(bào)告,如,METAR=“METARKPIA012354Z00000KT9SMR ABRSCT025BKN0350VC06516/14A3010"o步驟8)以“空格”為分隔符,將所輸入航空天氣報(bào)告分割成各報(bào)文字符串,將得到 的報(bào)文字符串放入目標(biāo)字符串?dāng)?shù)組,其中的航空天氣報(bào)告分割步驟如下
1)查找第一個(gè)分割詞;
82)截取從當(dāng)前位置到分割詞,放入報(bào)文字符串?dāng)?shù)組;
3)從當(dāng)前位置繼續(xù)查找下一個(gè)分割詞,直到字符串結(jié)束。用分割詞將報(bào)文句子分解成token (token代表一個(gè)可以被識(shí)別字符串),得 到報(bào)文要素={tokenl, token2, token3,……tokenn}用分割詞將報(bào)告句子分解成token (token代表一個(gè)可以被識(shí)別字符串,然后得到報(bào)告要素={tokenl,token2,token3,…… tokenn}={ ‘METAR, , ‘KPIA,, ‘012354Z,, ‘00000KT, , ‘9SM,, ‘RA,, ‘BR,, ‘SCT025,, ‘BK N035’,‘0VC065’,‘16/14’,‘A3010,}。步驟9)建立多模匹配模型;將報(bào)文的結(jié)構(gòu)定義為必須存在的,或者可能存在 的兩種模式,就是將語法結(jié)構(gòu)定義為基本結(jié)構(gòu)和次要結(jié)構(gòu)。如圖METAR報(bào)告的語法結(jié) 構(gòu),我們定義下列結(jié)構(gòu)為METAR報(bào)告的基本結(jié)構(gòu)<METAR>,<0BCC>,<0TIME>,<WIND>, 〈VISIBILITY〉,<CL0UD>,其余結(jié)構(gòu)為次要結(jié)構(gòu),如圖8所示。步驟10)設(shè)定回溯邊界C,該回溯邊界C代表當(dāng)某一個(gè)模式字符串找不到時(shí),向 后移動(dòng)的距離,也是匹配失敗后,向前回溯的距離,回溯邊界C是根據(jù)語法結(jié)構(gòu)來定義規(guī)范 函數(shù),規(guī)范函數(shù)是一個(gè)以語法結(jié)構(gòu)的層次為因變量的函數(shù),該規(guī)范函數(shù)的取值即是回溯邊 界。根據(jù)METAR報(bào)告的基本結(jié)構(gòu),設(shè)定回溯邊界為C=2 ;回溯邊界C代表模式串和報(bào)文字符 串進(jìn)行匹配的時(shí)候,匹配失敗的最大次數(shù)。對(duì)于METAR報(bào)告,C=2,當(dāng)當(dāng)前模式串P[i]和報(bào) 文字符串E[j]匹配失敗的時(shí)候,報(bào)文字符串最大會(huì)嘗試性的向下尋找2步(就是分別判斷 E[j+l],E[j+2]是否和 P[i]相匹配)。步驟11)啟動(dòng)帶回溯的有限狀態(tài)機(jī),對(duì)報(bào)告解碼
a)用正則表達(dá)式來表示模式字符串?dāng)?shù)組中的字符串;
b)用第j個(gè)目標(biāo)字符串E[j]去匹配第i個(gè)P[i]模式字符串,其中l(wèi)^jg爾;
c)如果匹配成功,則i++,j++,進(jìn)行目標(biāo)字符串?dāng)?shù)組和模式字符串?dāng)?shù)組中下一個(gè)字符 串的匹配;
d)若E[j]和P[i]不匹配,則判斷E[j+l]、E[j+2]和P[i]是否匹配,如果E[j+1]匹 配成功,則E[j]和E[j+1]交換位置,從E[j+1]和P[i+1]位置開始匹配,如果E[j+2]匹配 成功,則E[j]和E[j+2]交換位置,從E[j+1]和P[i+1]位置開始匹配,否則,跳過P[i]模 式,從P[i+1]和E[j]開始匹配;
e)重復(fù)步驟b)-c)或b)-d),直到目標(biāo)字符串?dāng)?shù)組或模式字符串?dāng)?shù)組結(jié)束,即i=n或
j=m。P[l...i...n] = { ‘METAR,,‘KPLA,,‘012354Z,,‘00000KT,,‘9SM,,‘RA,,‘BR,, ‘SCT025,, ‘BKN035,, ‘0VC065,, ‘16/14,, ‘A3010, };
E[i j m] = {<METAR>, <0BCC>, <0TIME>, <WIND>,〈VISIBILITY〉,<ffff>, <CL0UD>, <Temperature>, <Pressure>,......};
按照有限狀態(tài)機(jī)進(jìn)行處理,如果每一個(gè)模式代表一種狀態(tài),到來一條報(bào)告進(jìn)入這個(gè)自 動(dòng)機(jī),如果我們?nèi)匀灰宰罨镜哪J阶址甒indlXWind2XVisibilityXwWXCloud>為 例(其中<WindlXVisibilityXCloud>為基本結(jié)構(gòu),<Wind2Xww>為次要結(jié)構(gòu)),輸入報(bào)告 仍然和上面所列舉的一樣。根據(jù)上面所寫的回溯算法,當(dāng)需要進(jìn)入該模式的時(shí)候,相當(dāng)于將 三個(gè)字符串輸入,進(jìn)行匹配,如果有一個(gè)能夠正常匹配的話,則代表該模式匹配成功;如果 失敗,模式都轉(zhuǎn)向下一個(gè)狀態(tài),進(jìn)行繼續(xù)比較比較,直到要素字符串或者模式字符串有一個(gè)結(jié)束,則匹配過程就結(jié)束了。如果目標(biāo)字符串提前結(jié)束,則會(huì)直接結(jié)束(如圖9所示,虛線部 分)。步驟12) —般而言,報(bào)告會(huì)出現(xiàn)各種的異常,包括基本結(jié)構(gòu)異常也能盡可能的處 理。以下列問題為例,設(shè)“<0TimeXWindlXWind2XVisiblityXffffXTemperatureXPressu re>
〈Other〉” 為模式字符串,并且“〈OTimeXWindlXVisibilityXTemperatureXPres sure〉” 為基本結(jié)構(gòu),“012354ZRABR9SMSCT025BKN0350VC06516/14A3010” 為目標(biāo)字符串, 如果按照嚴(yán)格的語法結(jié)構(gòu),由于沒有基本結(jié)構(gòu)<Windl>,這個(gè)目標(biāo)字符串不合法,但是, 這樣的話,<Visibility><TemperatureXPressure>正確的結(jié)構(gòu)都不能夠被識(shí)別;另外, 〈Visibility〉和<ffff>字符串也出現(xiàn)了逆序。如圖10所示,報(bào)告的解碼算法能夠正常的處理這種情況,首先判斷模式<0Time>, 012354匹配模式<0Time>成功;將字符串“RABR9SM”輸入<.ffindl>狀態(tài),沒有符合匹配模 式的字符串,則跳過<Windl>模式;同時(shí)自動(dòng)機(jī)根據(jù)輸入字符,判斷并不是<Wind2>,則交給 模式〈Visibility〉;繼續(xù)將字符串“RABR9SM”輸入模式〈Visibility〉,9SM匹配成功,同時(shí) 交換9SM和BR,輸入字符串變?yōu)椤?SMBRRA” ;按照同樣的辦法,輸入“BRRASCT025”到狀態(tài) <WW>,匹配模式<ffff>成功;然后依次匹配模式〈Temperature〉,〈Pressure〉,因此直接到達(dá) 結(jié)束狀態(tài)。報(bào)告的解碼算法運(yùn)用偽代碼描述如下
步驟13)輸出匹配結(jié)果。將報(bào)告字符串(目標(biāo)字符串)和詞法結(jié)構(gòu)對(duì)應(yīng)起來。匹配結(jié) 果為 <0BCC>=KPIA, <0TIME>=012354, <WIND>=00000KT, <VISIBILITY>=9SM, <ffff>=RABR, <CL0UD>=SCT025BKN0350VC065,如圖 11 所示。接口和定義
本接口和定義是建立的構(gòu)建METAR報(bào)告語法結(jié)構(gòu)和詞法結(jié)構(gòu)的靜態(tài)模型。
1)類結(jié)構(gòu)總述,如下表所示
3) SaElement 類說明
4)正則表達(dá)式說明
權(quán)利要求
一種航空天氣報(bào)告的解碼方法,其特征在于,該方法步驟如下(1)運(yùn)用有限狀態(tài)機(jī)的描述方式來構(gòu)造、表示航空天氣報(bào)告的語法結(jié)構(gòu),建立語法自動(dòng)機(jī);(2)根據(jù)航空天氣報(bào)告的電碼格式來構(gòu)造航空天氣報(bào)告中風(fēng)組、能見度組、云組、溫度組、氣壓組的詞法結(jié)構(gòu),建立相應(yīng)的詞法自動(dòng)機(jī);(3) 輸入一段航空天氣報(bào)告;(4)以“空格”為分隔符,將所輸入的航空天氣報(bào)告分割成各報(bào)文字符串,將得到的報(bào)文字符串放入目標(biāo)字符串?dāng)?shù)組;(5)建立多模匹配模型,將報(bào)告的語法結(jié)構(gòu)定義為基本結(jié)構(gòu)和次要結(jié)構(gòu),并將基本結(jié)構(gòu)的字符串存儲(chǔ)構(gòu)成模式字符串?dāng)?shù)組;(6)啟動(dòng)有限狀態(tài)機(jī),通過目標(biāo)字符串?dāng)?shù)組中的字符串與模式字符串?dāng)?shù)組中相匹配,實(shí)現(xiàn)航空天氣報(bào)告解碼。
2.根據(jù)權(quán)利要求1所述的解碼方法,其特征在于所述步驟(5)之后,還設(shè)定回溯邊界 C,該回溯邊界C代表當(dāng)某一個(gè)模式字符串找不到時(shí),向后移動(dòng)的距離,也是匹配失敗后,向 前回溯的距離。
3.根據(jù)權(quán)利要求2所述的解碼方法,其特征在于所述步驟(1)語法自動(dòng)機(jī)中的各狀態(tài) 對(duì)應(yīng)于航空天氣報(bào)告中包含的識(shí)別組、風(fēng)、能見度、現(xiàn)在天氣、云、溫度、氣壓、補(bǔ)充信息,航 空天氣報(bào)告的語法結(jié)構(gòu)描述如下<METAR>=METAR+<OBCC>+<OTime><ffind><Visibility><ww><Cloud><TemperatureXPr essure><Other>,或 <METAR>=METAR+<OBCC>+<OTime>+ "NIL",此處NIL代表空?qǐng)?bào),如果報(bào)文有OTL,仍然認(rèn)為是合法報(bào)文,但是不作任何處理;其中<WindXVisibility><ww><Cloud>=<Wind><Visibility><ww><Cloud> | “CAVOK”, CAVOK代表天氣現(xiàn)象良好,報(bào)文中有CAVOK的時(shí)候,可以沒有能見度(visibility),天氣現(xiàn) 象(ww),云組要素值(cloud);<ww>=<ww> I ε ,<0ther>=<0ther>| ε 0
4.根據(jù)權(quán)利要求3所述的解碼方法,其特征在于所述步驟(2)中詞法自動(dòng)機(jī)中的各狀 態(tài)對(duì)應(yīng)于語法自動(dòng)機(jī)中包含的風(fēng)組、能見度組、云組、溫度組、氣壓組中一個(gè)字符串從初始 狀態(tài)到結(jié)束狀態(tài)所經(jīng)歷的變換過程。
5.根據(jù)權(quán)利要求4所述的解碼方法,其特征在于所述步驟(4)中航空天氣報(bào)告的分割 是先從輸入的航空天氣報(bào)告中查找第一個(gè)分割詞;然后截取從當(dāng)前位置到分割詞的字符構(gòu) 成一個(gè)字符串,將得到的字符放入目標(biāo)字符串?dāng)?shù)組;從當(dāng)前位置繼續(xù)查找下一個(gè)分割詞,直 到航空天氣報(bào)告結(jié)束。
6.根據(jù)權(quán)利要求2或5所述的解碼方法,其特征在于所述回溯邊界C是根據(jù)語法結(jié) 構(gòu)來定義規(guī)范函數(shù),規(guī)范函數(shù)是一個(gè)以語法結(jié)構(gòu)的層次為因變量的函數(shù),該規(guī)范函數(shù)的取 值即是回溯邊界C,回溯邊界C代表當(dāng)模式串和報(bào)文字符串進(jìn)行匹配的時(shí)候,匹配失敗的最 大次數(shù)。
7.根據(jù)權(quán)利要求6所述的解碼方法,其特征在于設(shè)定回溯邊界C=k,則如果第一次匹配失敗,就判斷E[j+l]、E[j+2]……E[j+k]和P[i]是否匹配。
8.根據(jù)權(quán)利要求6所述的解碼方法,其特征在于所述步驟(6)中對(duì)報(bào)告解碼,設(shè)回溯 邊界C=2,P[i]為模式字符串?dāng)?shù)組中第i個(gè)模式字符串,E[j]為目標(biāo)字符串?dāng)?shù)組中第j個(gè) 目標(biāo)字符串,具體解碼步驟如下a)用正則表達(dá)式來表示模式字符串?dāng)?shù)組中的字符串;b)用第j個(gè)目標(biāo)字符串E[j]去匹配第i個(gè)P[i]模式字符串,其中c)如果匹配成功,則i++,j++,進(jìn)行目標(biāo)字符串?dāng)?shù)組和模式字符串?dāng)?shù)組中下一個(gè)字符 串的匹配;d)若E[j]和P[i]不匹配,則判斷E[j+l]、E[j+2]和P[i]是否匹配,如果E[j+1]匹 配成功,則E[j]和E[j+1]交換位置,從E[j+1]和P[i+1]位置開始匹配,如果E[j+2]匹配 成功,則E[j]和E[j+2]交換位置,從E[j+1]和P[i+1]位置開始匹配,否則,跳過P[i]模 式,從P[i+1]和E[j]開始匹配;e)重復(fù)步驟b)-c)或b)-d),直到目標(biāo)字符串?dāng)?shù)組或模式字符串?dāng)?shù)組結(jié)束,即i=n或j=m。
全文摘要
本發(fā)明涉及航空天氣報(bào)告的解碼方法,屬于氣象資料處理以及氣象信息抽取領(lǐng)域。該方法運(yùn)用有限狀態(tài)機(jī)的描述方式,并根據(jù)航空天氣報(bào)告的電碼格式構(gòu)造出語法自動(dòng)機(jī)和詞法自動(dòng)機(jī);然后,將報(bào)文輸入自動(dòng)機(jī),查找出報(bào)文內(nèi)容中的多個(gè)模式字符串,識(shí)別報(bào)文中的氣象要素;最后,顯示多模匹配結(jié)果,實(shí)現(xiàn)對(duì)報(bào)文的解碼;方法中引入有限狀態(tài)機(jī),運(yùn)用有限狀態(tài)機(jī)的描述方式建立的航空例行天氣報(bào)告語法分析和詞法分析,使其結(jié)構(gòu)更加明確,提高了報(bào)告解碼的有效性;建立航空天氣報(bào)告詞法結(jié)構(gòu),使得報(bào)告翻譯之后,可以用計(jì)算機(jī)語言表述。詞法結(jié)構(gòu)和語法結(jié)構(gòu)較電碼結(jié)構(gòu)更容易理解,并且簡(jiǎn)化氣象報(bào)文相關(guān)程序開發(fā)的復(fù)雜度。
文檔編號(hào)G06F17/27GK101853248SQ20101018435
公開日2010年10月6日 申請(qǐng)日期2010年5月27日 優(yōu)先權(quán)日2010年5月27日
發(fā)明者張吉楠, 曹奎, 鄭逢斌, 郭拯危, 陳志國(guó) 申請(qǐng)人:河南大學(xué)