/** * 生成一元词网 * * @param wordNetStorage */ protected void GenerateWordNet(WordNet wordNetStorage) { char[] charArray = wordNetStorage.charArray; // 核心词典查询 DoubleArrayTrie <CoreDictionary.Attribute> .Searcher searcher = CoreDictionary.trie.getSearcher(charArray, 0); while (searcher.next()) { wordNetStorage.add(searcher.begin + 1, new Vertex(new String(charArray, searcher.begin, searcher.length), searcher.value, searcher.index)); } // 用户词典查询 // if (config.useCustomDictionary) // { // searcher = CustomDictionary.dat.getSearcher(charArray, 0); // while (searcher.next()) // { // wordNetStorage.add(searcher.begin + 1, new Vertex(new String(charArray, searcher.begin, searcher.length), searcher.value)); // } // } // 原子分词,保证图连通 //List<Vertex>[] vertexes = wordNetStorage.getVertexes(); List <Vertex>[] vertexes = wordNetStorage.getVertexes(); for (int i = 1; i < vertexes.Length;) { if (vertexes[i].Count == 0) { int j = i + 1; for (; j < vertexes.Length - 1; ++j) { if (!(vertexes[j].Count == 0)) { break; } } wordNetStorage.add(i, quickAtomSegment(charArray, i - 1, j - 1)); i = j; } else { i += vertexes[i][vertexes[i].Count - 1].realWord.Length; } } }