From 04e14e3b74bd16733c7fb97d0bf78f5475a63f73 Mon Sep 17 00:00:00 2001 From: tsaolun Date: Wed, 16 Aug 2023 13:16:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=96=91=E9=97=AE=E5=8F=A5?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E8=AF=86=E5=88=AB=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot/adapters/logic/closestmatch.go | 1 - bot/adapters/storage/memorystorage.go | 2 +- .../storage/separatedmemorystorage.go | 5 ++-- bot/nlp/sentencedetect.go | 23 +++++++++++++++++++ 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/bot/adapters/logic/closestmatch.go b/bot/adapters/logic/closestmatch.go index 90f4cb4..1983236 100644 --- a/bot/adapters/logic/closestmatch.go +++ b/bot/adapters/logic/closestmatch.go @@ -151,7 +151,6 @@ func generator(match *closestMatch, text string) mr.GenerateFunc { if match.verbose { printMatches(keys) } - chunks := splitStrings(keys, chunkSize) for _, chunk := range chunks { source <- sourceAndTargets{ diff --git a/bot/adapters/storage/memorystorage.go b/bot/adapters/storage/memorystorage.go index 0e0d9b2..489542d 100644 --- a/bot/adapters/storage/memorystorage.go +++ b/bot/adapters/storage/memorystorage.go @@ -35,7 +35,7 @@ func init() { idfFile = path.Join(dir, idfFile) stopWordsFile = path.Join(dir, stopWordsFile) generatedStopWordsFile = path.Join(dir, generatedStopWordsFile) - log.Printf("dictFile: %s idfFile %s stopWordsFile %s genratedStopWordsFile %s\n", dictFile, idfFile, stopWordsFile, generatedStopWordsFile) + log.Printf("DictFile: %s \nIdfFile: %s \nStopWordsFile: %s \nGenratedStopWordsFile: %s\n", dictFile, idfFile, stopWordsFile, generatedStopWordsFile) } type ( diff --git a/bot/adapters/storage/separatedmemorystorage.go b/bot/adapters/storage/separatedmemorystorage.go index 75199d7..28add3c 100644 --- a/bot/adapters/storage/separatedmemorystorage.go +++ b/bot/adapters/storage/separatedmemorystorage.go @@ -64,10 +64,9 @@ func (storage *separatedMemoryStorage) Find(sentence string) (map[string]int, bo func (storage *separatedMemoryStorage) Search(sentence string) []string { if nlp.IsQuestion(sentence) { - return storage.questionStorage.Search(sentence) - } else { - return storage.declarativeStorage.Search(sentence) + sentence = nlp.RemoveAllQuestionMark(sentence) } + return storage.declarativeStorage.Search(sentence) } func (storage *separatedMemoryStorage) Remove(sentence string) { diff --git a/bot/nlp/sentencedetect.go b/bot/nlp/sentencedetect.go index 250b1e9..bf31e5f 100644 --- a/bot/nlp/sentencedetect.go +++ b/bot/nlp/sentencedetect.go @@ -44,6 +44,29 @@ func IsQuestion(sentence string) bool { return false } +func RemoveAllQuestionMark(sentence string) string { + chars := []rune(strings.TrimSpace(sentence)) + if len(chars) == 0 { + return sentence + } + + if _, ok := endQuestionChars[chars[len(chars)-1]]; ok { + sentence = string(chars[:len(chars)-1]) + } + // remove embededQuestionMarks + for _, key := range embededQuestionMarks { + if strings.Contains(sentence, key) { + sentence = strings.ReplaceAll(sentence, key, "") + chars = []rune(strings.TrimSpace(sentence)) + if len(chars) == 0 { + return sentence + } + } + } + + return sentence +} + func createSet(items []rune) map[rune]lang.PlaceholderType { ret := make(map[rune]lang.PlaceholderType) for _, item := range items {