2017-10-21 28 views
1

在我的一個項目中,我試圖識別給定句子中的文件名。例如,「您可以打開abc.txt」,因此我需要獲取關鍵字「open」,以便了解預期的操作類型,並且我還需要識別文件名,原因很明顯。這樣做的一個簡單的AIML標籤:在Python中識別點圖案

<aiml> 
<category> 
    <pattern>* OPEN *</pattern> 
    <template>open <star index="2"/></template> 
<category> 
</aiml> 

這裏,在模板標籤,我在這裏只給將要執行的操作和文件名的信息。另一方面,我的python代碼負責執行所需的操作。 現在的問題是'。'字符。使用該字符將該句子分成兩部分(在上述例子中,這兩個句子是「您能否打開abc」和「txt」),它們分別映射到定義的任何一個aiml標籤。但是,在我的情況下,我不想要'。'字符作爲分隔符。基本上,我想識別可能包含或不包含擴展名的文件名。任何人都可以請幫我解決這個問題嗎?

在此先感謝!

回答

0

默認情況下,AIML允許多個句子輸入。這意味着句號中的句號,感嘆號和問號被視爲分隔符。例如,如果您問:

早上好。我的名字是喬治。你今天好嗎?

這被解釋爲3個單獨的輸入。通常情況下這是一件好事,因爲它意味着AIML翻譯可以重複使用現有的模式進行早安,我的名字是*,你是如何*。

但是在您的情況下,這並不能幫助您在擴展導致不需要的分割之前完全停止。取決於您的AIML解釋器,在將輸入發送給解釋器之前,在預處理階段完成句子拆分。某些AIML解釋器有一個配置文件,可讓您定義句子分隔字符,因此您可以簡單地從分隔符列表中刪除句號。

一個更好的辦法可能是預先處理的文件名和替換句號字DOT,那麼您可以在您的模式檢測到這種* OPEN *

作爲最後的評論,* OPEN *是非常廣泛的模式,如果有人說現在商店是什麼時間,或者文字包圍的單詞OPEN的任何其他輸入,它也會被調用。