From 35094877da3772a849b5e21c33e0b8f52359a814 Mon Sep 17 00:00:00 2001 From: Wang Bin Date: Thu, 26 Feb 2015 14:42:16 +0800 Subject: [PATCH] small refactor --- dict.go | 16 ++++++++++------ posseg/posseg.go | 20 ++++++++++++++++++++ trie.go | 20 ++++---------------- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/dict.go b/dict.go index a753d32..c01006f 100644 --- a/dict.go +++ b/dict.go @@ -26,7 +26,13 @@ func DictPath(dictFileName string) (string, error) { return dictFilePath, nil } -func ParseDictFile(dictFile *os.File) (wtfs []*WordTagFreq, err error) { +func ParseDictFile(dictFilePath string) (wtfs []*WordTagFreq, err error) { + var dictFile *os.File + dictFile, err = os.Open(dictFilePath) + if err != nil { + return + } + scanner := bufio.NewScanner(dictFile) for scanner.Scan() { line := scanner.Text() @@ -38,7 +44,7 @@ func ParseDictFile(dictFile *os.File) (wtfs []*WordTagFreq, err error) { if length > 1 { wtf.Freq, err = strconv.ParseFloat(fields[1], 64) if err != nil { - return nil, err + return } } if length > 2 { @@ -46,8 +52,6 @@ func ParseDictFile(dictFile *os.File) (wtfs []*WordTagFreq, err error) { } wtfs = append(wtfs, wtf) } - if err = scanner.Err(); err != nil { - return nil, err - } - return wtfs, nil + err = scanner.Err() + return } diff --git a/posseg/posseg.go b/posseg/posseg.go index aa3dd8e..bb984ce 100644 --- a/posseg/posseg.go +++ b/posseg/posseg.go @@ -41,6 +41,26 @@ func init() { } } +/* +func SetDictionary(dictFileName string) error { + err := jiebago.SetDictionary(dictFileName) + if err != nil { + return err + } + dictFilePath, err := jiebago.DictPath(dictFileName) + if err != nil { + return err + } + dictFile, err := os.Open(dictFilePath) + if err != nil { + return err + } + defer dictFile.Close() + + wtfs, err := ParseDictFile(dictFile) + +} +*/ func load_model(f_name string) error { file, openError := os.Open(f_name) if openError != nil { diff --git a/trie.go b/trie.go index 389cd97..a46f99d 100644 --- a/trie.go +++ b/trie.go @@ -96,13 +96,7 @@ func newTrie(dictFileName string) (*Trie, error) { if !isDictCached { trie = &Trie{Total: 0.0, Freq: make(map[string]float64)} - dictFile, err := os.Open(dictFilePath) - if err != nil { - return nil, err - } - defer dictFile.Close() - - wtfs, err := ParseDictFile(dictFile) + wtfs, err := ParseDictFile(dictFilePath) if err != nil { return nil, err } @@ -147,13 +141,7 @@ func addWord(wtf *WordTagFreq) { } func LoadUserDict(dictFilePath string) error { - dictFile, err := os.Open(dictFilePath) - if err != nil { - return err - } - defer dictFile.Close() - - wtfs, err := ParseDictFile(dictFile) + wtfs, err := ParseDictFile(dictFilePath) if err != nil { return err } @@ -163,7 +151,7 @@ func LoadUserDict(dictFilePath string) error { return nil } -func SetDictionary(dict_path string) (err error) { - T, err = newTrie(dict_path) +func SetDictionary(dictFileName string) (err error) { + T, err = newTrie(dictFileName) return }