Skip to content

Commit 609c185

Browse files
committed
解决了有些数字被分词认为成了x词性
1 parent 7ff0df1 commit 609c185

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

tests/finder_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@ func TestTimeFinder(t *testing.T) {
1010
var msg string
1111
var extract []string
1212

13+
msg = "后天早上10:35的会议,需要及时参与"
14+
extract = timefinder.TimeExtract(msg)
15+
fmt.Println(msg)
16+
fmt.Println(extract)
17+
18+
msg = "明天下午三点的飞机,提醒我坐车"
19+
extract = timefinder.TimeExtract(msg)
20+
fmt.Println(msg)
21+
fmt.Println(extract)
22+
1323
msg = "一个小时后提醒我喝水"
1424
extract = timefinder.TimeExtract(msg)
1525
fmt.Println(msg)

timefinder.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ var keyWeekDay = map[string]int{
3636
"这个礼拜": 0, "这礼拜": 0, "本礼拜": 0, "礼拜": 0, "下个礼拜": 7, "下下个礼拜": 14, "上个礼拜": -7, "上上个礼拜": -14,
3737
}
3838

39-
var jiebaTimeTag = []string{"m", "t", "f", "x"}
39+
var jiebaTimeTag = []string{"m", "t", "f"}
4040

4141
// cn2dig 中文单元转化为数字
4242
func cn2dig(src string) (rsl int) {
@@ -355,6 +355,15 @@ func TimeExtract(text string) (finalRes []string) {
355355
for _, tag := range segments {
356356
k := tag.Token().Text()
357357
v := tag.Token().Pos()
358+
isXNum := false
359+
if v == "x" {
360+
_, err := strconv.Atoi(k)
361+
if err != nil {
362+
isXNum = false
363+
} else {
364+
isXNum = true
365+
}
366+
}
358367
pegList = append(pegList, fmt.Sprintf("%v/%s", k, v))
359368
if cpDate, exist := keyDate[k]; exist {
360369
if word != "" {
@@ -372,7 +381,7 @@ func TimeExtract(text string) (finalRes []string) {
372381
word = strconv.Itoa(nMonth+cpMonth) + "月"
373382
txt += k
374383
} else if word != "" {
375-
if includes(jiebaTimeTag, v) || k == ":" {
384+
if includes(jiebaTimeTag, v) || k == ":" || isXNum {
376385
word = word + k
377386
txt += k
378387
} else {
@@ -381,7 +390,7 @@ func TimeExtract(text string) (finalRes []string) {
381390
word = ""
382391
txt = ""
383392
}
384-
} else if includes(jiebaTimeTag, v) || k == ":" {
393+
} else if includes(jiebaTimeTag, v) || k == ":" || isXNum {
385394
word = k
386395
txt = k
387396
}

0 commit comments

Comments
 (0)