如何查看Pocketsphinx字典中是否存在单词?

我只想查看字典文件中是否存在字符串。 (问题底部的字典文件)

我想检查语音识别器是否能识别一个单词。 例如,识别器将无法识别ahdfojakdlfafiop的字符串,因为它未在字典中定义。 那么, 我可以检查一个单词是否在pocktsphinx的字典中?

就像是:

  if(myString.existsInDictionary){ startListeningBecauseExists(); }else( //Doesn't exist in dictionary!!! } 

我只是想要一种方法来判断识别器是否可以监听我想要它听的内容。

这是字典文件:

https://raw.githubusercontent.com/cmusphinx/pocketsphinx-android-demo/master/app/src/main/assets/sync/cmudict-en-us.dict

谢谢,

Ruchir

在C中有ps_lookup_word函数,它允许您查找单词:

 if (ps_lookup_word(ps, "abc") == NULL) { // do something } 

在Java包装器中,它是一个方法Decoder.lookupWord

 if(decoder.lookupWord("abc") == null) { // do something } 

在Android中,您可以从Recognizer器访问解码器:

 if(recognizer.getDecoder().lookupWord("abc") == null) { // do something } 

使用BufferedReader读取文件并将所有单词存储在ArrayList

 ArrayList dictionary = new ArrayList<>(); String line; BufferedReader reader = new BufferedReader(new FileReader(dictionaryFile)); while((line = reader.readLine()) != null) { if(line.trim().length() <= 0 ) { continue; } String word = line.split(" ")[0].trim(); word = word.replaceAll("[^a-zA-Z]", ""); dictionary.add(word); } 

然后检查dictionary是否存在dictionary

 dictionary.contains(yourString); 

希望它会有所帮助。

您可以通过逐行读取字典将字典加载到arraylist并仅获取单词

arraylist.add(line.split("\\s+")[0]);

然后检查它是否存在

if(arraylist.contains(word))