mirror of
https://github.com/fumiama/jieba.git
synced 2026-06-21 03:10:55 +08:00
code refactor, newTire method now only return errors
This commit is contained in:
30
trie.go
30
trie.go
@@ -46,15 +46,15 @@ func (t *Trie) UnmarshalBinary(data []byte) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newTrie(dictFileName string) (*Trie, error) {
|
func newTrie(dictFileName string) error {
|
||||||
dictFilePath, err := DictPath(dictFileName)
|
dictFilePath, err := DictPath(dictFileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
dictFileInfo, err := os.Stat(dictFilePath)
|
dictFileInfo, err := os.Stat(dictFilePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Building Trie..., from %s\n", dictFilePath)
|
log.Printf("Building Trie..., from %s\n", dictFilePath)
|
||||||
@@ -81,11 +81,9 @@ func newTrie(dictFileName string) (*Trie, error) {
|
|||||||
defer cacheFile.Close()
|
defer cacheFile.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
var trie *Trie
|
|
||||||
|
|
||||||
if isDictCached {
|
if isDictCached {
|
||||||
dec := gob.NewDecoder(cacheFile)
|
dec := gob.NewDecoder(cacheFile)
|
||||||
err = dec.Decode(&trie)
|
err = dec.Decode(&T)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
isDictCached = false
|
isDictCached = false
|
||||||
} else {
|
} else {
|
||||||
@@ -94,31 +92,29 @@ func newTrie(dictFileName string) (*Trie, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !isDictCached {
|
if !isDictCached {
|
||||||
trie = &Trie{Total: 0.0, Freq: make(map[string]float64)}
|
|
||||||
|
|
||||||
wtfs, err := ParseDictFile(dictFilePath)
|
wtfs, err := ParseDictFile(dictFilePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, wtf := range wtfs {
|
for _, wtf := range wtfs {
|
||||||
trie.addWord(wtf)
|
T.addWord(wtf)
|
||||||
}
|
}
|
||||||
// dump trie
|
// dump trie
|
||||||
cacheFile, err = os.OpenFile(cacheFilePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
|
cacheFile, err = os.OpenFile(cacheFilePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return trie, err
|
return err
|
||||||
}
|
}
|
||||||
defer cacheFile.Close()
|
defer cacheFile.Close()
|
||||||
enc := gob.NewEncoder(cacheFile)
|
enc := gob.NewEncoder(cacheFile)
|
||||||
err = enc.Encode(trie)
|
err = enc.Encode(T)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return trie, err
|
return err
|
||||||
} else {
|
} else {
|
||||||
log.Printf("dumped model from cache %s\n", cacheFilePath)
|
log.Printf("dumped model from cache %s\n", cacheFilePath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return trie, nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Trie) addWord(wtf *WordTagFreq) {
|
func (t *Trie) addWord(wtf *WordTagFreq) {
|
||||||
@@ -151,7 +147,7 @@ func LoadUserDict(dictFilePath string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetDictionary(dictFileName string) (err error) {
|
func SetDictionary(dictFileName string) error {
|
||||||
T, err = newTrie(dictFileName)
|
T = &Trie{Total: 0.0, Freq: make(map[string]float64)}
|
||||||
return
|
return newTrie(dictFileName)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user