Skip to content

Commit

Permalink
鶏には取り憑かない #7
Browse files Browse the repository at this point in the history
  • Loading branch information
kurehajime committed Sep 28, 2018
1 parent adfd79b commit df17b1d
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 5 deletions.
23 changes: 20 additions & 3 deletions dajarep.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package dajarep

import (
"math"
"regexp"
"strings"

Expand All @@ -23,6 +22,7 @@ type word struct {
type sentence struct {
str string
kana string
yomi string
words []word
}

Expand All @@ -47,10 +47,13 @@ func isDajare(sen sentence) (bool, string) {
rStr := regexp.MustCompile(w.str)
rKana := regexp.MustCompile(fixWord(w.kana))
hitStr := rStr.FindAllString(sen.str, -1)
hitKana := rKana.FindAllString(sen.kana, -1)
hitKana1 := rKana.FindAllString(sen.kana, -1)
hitKana2 := rKana.FindAllString(fixSentence(sen.kana), -1)
hitKana3 := rKana.FindAllString(sen.yomi, -1)
hitKana4 := rKana.FindAllString(fixSentence(sen.yomi), -1)

//ある単語における 原文の一致文字列数<フリガナでの一致文字列数 → 駄洒落の読みが存在
if len(hitStr) < int(math.Max(float64(len(hitKana)), float64(len(hitKana2)))) {
if len(hitStr) < most(len(hitKana1), len(hitKana2), len(hitKana3), len(hitKana4)) {
return true, w.kana
}
}
Expand Down Expand Up @@ -115,6 +118,8 @@ func getSentences(text string) []sentence {
tokens := t.Tokenize(senstr[i])
var words []word
var kana string
var yomi string

for j := 0; j < len(tokens); j++ {
tk := tokens[j]
ft := tk.Features()
Expand All @@ -125,14 +130,26 @@ func getSentences(text string) []sentence {
}
words = append(words, w)
kana += ft[7]
yomi += ft[8]
}
}
sentences = append(sentences,
sentence{
str: senstr[i],
words: words,
kana: kana,
yomi: yomi,
})
}
return sentences
}

func most(num ...int) int {
i := 0
for _, n := range num {
if n > i {
i = n
}
}
return i
}
7 changes: 5 additions & 2 deletions dajarep_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ func TestDajarep(t *testing.T) {
イカは如何なものか
親譲りの無鉄砲で子供の時から損ばかりしている
マイケル・ジョーダンが冗談を言った
知事が縮む`
知事が縮む
鶏には取り憑かない
破壊についての和解`
ans := `アルミ缶の上にあるミカン
智代子のチョコ
布団が吹っ飛んだ
Expand All @@ -29,7 +31,8 @@ func TestDajarep(t *testing.T) {
傘を貸さない
イカは如何なものか
マイケル・ジョーダンが冗談を言った
知事が縮む`
知事が縮む
鶏には取り憑かない`
d, _ := Dajarep(input)
res := strings.Join(d, "\n")
if res != ans {
Expand Down

0 comments on commit df17b1d

Please sign in to comment.