Пример #1
0
    def test_at(self):
        # https://twitter.com/vinta
        self.assertEqual(pangu.spacing('前面@vinta後面'), u'前面 @vinta 後面')
        self.assertEqual(pangu.spacing('前面 @vinta 後面'), u'前面 @vinta 後面')

        # http://weibo.com/vintalines
        self.assertEqual(pangu.spacing('前面@陳上進 後面'), u'前面 @陳上進 後面')
        self.assertEqual(pangu.spacing('前面 @陳上進 後面'), u'前面 @陳上進 後面')
        self.assertEqual(pangu.spacing('前面 @陳上進tail'), u'前面 @陳上進 tail')
Пример #2
0
    def test_at(self):
        # https://twitter.com/vinta
        self.assertEqual(pangu.spacing('前面@vinta後面'), u'前面 @vinta 後面')
        self.assertEqual(pangu.spacing('前面 @vinta 後面'), u'前面 @vinta 後面')

        # http://weibo.com/vintalines
        self.assertEqual(pangu.spacing('前面@陳上進 後面'), u'前面 @陳上進 後面')
        self.assertEqual(pangu.spacing('前面 @陳上進 後面'), u'前面 @陳上進 後面')
        self.assertEqual(pangu.spacing('前面 @陳上進tail'), u'前面 @陳上進 tail')
Пример #3
0
    def test_special_characters(self):
        # \u201c and \u201d
        self.assertEqual(pangu.spacing('前面“中文123漢字”後面'), u'前面 “中文 123 漢字” 後面')

        # \u2026
        self.assertEqual(pangu.spacing('前面…後面'), u'前面… 後面')
        self.assertEqual(pangu.spacing('前面……後面'), u'前面…… 後面')

        # \u2027
        self.assertEqual(pangu.spacing('前面‧後面'), u'前面 ‧ 後面')
Пример #4
0
    def test_special_characters(self):
        # \u201c and \u201d
        self.assertEqual(pangu.spacing('前面“中文123漢字”後面'), u'前面 “中文 123 漢字” 後面')

        # \u2026
        self.assertEqual(pangu.spacing('前面…後面'), u'前面… 後面')
        self.assertEqual(pangu.spacing('前面……後面'), u'前面…… 後面')

        # \u2027
        self.assertEqual(pangu.spacing('前面‧後面'), u'前面 ‧ 後面')
Пример #5
0
 def test_parentheses(self):
     self.assertEqual(pangu.spacing('前面(中文123漢字)後面'), '前面 (中文 123 漢字) 後面')
     self.assertEqual(pangu.spacing('前面(中文123)後面'), '前面 (中文 123) 後面')
     self.assertEqual(pangu.spacing('前面(123漢字)後面'), '前面 (123 漢字) 後面')
     self.assertEqual(pangu.spacing('前面(中文123) tail'), '前面 (中文 123) tail')
     self.assertEqual(pangu.spacing('head (中文123漢字)後面'), 'head (中文 123 漢字) 後面')
     self.assertEqual(pangu.spacing('head (中文123漢字) tail'), 'head (中文 123 漢字) tail')
     self.assertEqual(pangu.spacing('(or simply "React")'), '(or simply "React")')
     self.assertEqual(pangu.spacing("OperationalError: (2006, 'MySQL server has gone away')"), "OperationalError: (2006, 'MySQL server has gone away')")
     self.assertEqual(pangu.spacing('我看过的电影(1404)'), '我看过的电影 (1404)')
     self.assertEqual(pangu.spacing('Chang Stream(变更记录流)是指collection(数据库集合)的变更事件流'), 'Chang Stream (变更记录流) 是指 collection (数据库集合) 的变更事件流')
Пример #6
0
    def test_slash(self):
        self.assertEqual(pangu.spacing('前面/後面'), '前面 / 後面')
        self.assertEqual(pangu.spacing('前面 / 後面'), '前面 / 後面')
        self.assertEqual(pangu.spacing('Vinta/Mollie'), 'Vinta/Mollie')
        self.assertEqual(pangu.spacing('Vinta/陳上進'), 'Vinta / 陳上進')
        self.assertEqual(pangu.spacing('陳上進/Vinta'), '陳上進 / Vinta')
        self.assertEqual(pangu.spacing('Mollie/陳上進/Vinta'), 'Mollie / 陳上進 / Vinta')

        self.assertEqual(pangu.spacing('得到一個A/B的結果'), '得到一個 A/B 的結果')
        self.assertEqual(pangu.spacing('2016-12-26(奇幻电影节) / 2017-01-20(美国) / 詹姆斯麦卡沃伊'), '2016-12-26 (奇幻电影节) / 2017-01-20 (美国) / 詹姆斯麦卡沃伊')
        self.assertEqual(pangu.spacing('/home/和/root是Linux中的頂級目錄'), '/home/ 和 /root 是 Linux 中的頂級目錄')
        self.assertEqual(pangu.spacing('當你用cat和od指令查看/dev/random和/dev/urandom的內容時'), '當你用 cat 和 od 指令查看 /dev/random 和 /dev/urandom 的內容時')
Пример #7
0
 def say(self, context=(), continuewords=()):
     context = context or continuewords
     ctxvoc = list(frozenset(self.voc).intersection(map(self.voc.__getitem__, frozenset(itertools.chain.from_iterable(map(unpackvals, map(self.ctx.__getitem__, filter(None, map(self.indexword, frozenset(context)))))))))) or self.voc if context else self.voc
     out = []
     stack = list(continuewords)
     if stack:
         history = ' '.join(stack) + ' '
         idx, w = weighted_choice_king(
             10**self.lm.score(history + c, 1, 0) for c in ctxvoc)
     else:
         idx, w = weighted_choice_king(
             10**self.lm.score(c, 1, 0) for c in ctxvoc)
     out.append(ctxvoc[idx])
     stack.append(ctxvoc[idx])
     while 1:
         bos = (len(stack) <= self.lm.order + 2)
         history = ' '.join(stack[-self.lm.order - 2:]) + ' '
         idx, w = weighted_choice_king(
             10**self.lm.score(history + ctxvoc[k // 2], bos, k % 2) for k in range(len(ctxvoc) * 2))
         c = ctxvoc[idx // 2]
         out.append(c)
         stack.append(c)
         if idx % 2 or self.stopfn(out):
             break
     return pangu.spacing(''.join(joinword(out)))
Пример #8
0
def generate_word(lm, order, ctxvoc, cont=()):
    out = []
    stack = list(cont)
    if stack:
        history = ' '.join(stack) + ' '
        idx, w = weighted_choice_king(
            10**lm.score(history + c, 1, 0) for c in ctxvoc)
    else:
        idx, w = weighted_choice_king(10**lm.score(c, 1, 0) for c in ctxvoc)
    # sys.stdout.buffer.write(ctxvoc[idx].encode('utf-8'))
    out.append(ctxvoc[idx])
    stack.append(ctxvoc[idx])
    while 1:
        bos = (len(stack) <= order + 2)
        history = ' '.join(stack[-order - 2:]) + ' '
        idx, w = weighted_choice_king(
            10**lm.score(history + ctxvoc[k // 2], bos, k % 2) for k in range(len(ctxvoc) * 2))
        c = ctxvoc[idx // 2]
        # cprint(c)
        out.append(c)
        stack.append(c)
        if idx % 2 or (len(out) > 3 and all(i == out[-1] for i in out[-3:])):
            # cprint('\n')
            break
    return pangu.spacing(''.join(joinword(out)))
Пример #9
0
    def detokenize(self, text: List[str]) -> str:
        RE_WS_IN_FW = re.compile(
            r'([\u2018\u2019\u201c\u201d\u2e80-\u312f\u3200-\u32ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff00-\uffef])\s+(?=[\u2018\u2019\u201c\u201d\u2e80-\u312f\u3200-\u32ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff00-\uffef])'
        )

        detokenize = lambda s: spacing(RE_WS_IN_FW.sub(r'\1', s)).strip()
        return detokenize(' '.join(text))
Пример #10
0
 def test_colon(self):
     self.assertEqual(pangu.spacing('前面:後面'), '前面:後面')
     self.assertEqual(pangu.spacing('前面 : 後面'), '前面:後面')
     self.assertEqual(pangu.spacing('前面: 後面'), '前面:後面')
     self.assertEqual(pangu.spacing('前面 :後面'), '前面:後面')
     self.assertEqual(pangu.spacing('電話:123456789'), '電話:123456789')
     self.assertEqual(pangu.spacing('前面:)後面'), '前面:) 後面')
     self.assertEqual(pangu.spacing('前面:I have no idea後面'), '前面:I have no idea 後面')
     self.assertEqual(pangu.spacing('前面: I have no idea後面'), '前面: I have no idea 後面')
Пример #11
0
    def test_spacing(self):
        self.assertEqual(pangu.spacing('新八的構造成分有95%是眼鏡、3%是水、2%是垃圾'), u'新八的構造成分有 95% 是眼鏡、3% 是水、2% 是垃圾')
        self.assertEqual(pangu.spacing(u'新八的構造成分有95%是眼鏡、3%是水、2%是垃圾'), u'新八的構造成分有 95% 是眼鏡、3% 是水、2% 是垃圾')

        self.assertEqual(pangu.spacing('所以,請問Jackey的鼻子有幾個?3.14個!'), u'所以, 請問 Jackey 的鼻子有幾個? 3.14 個!')
        self.assertEqual(pangu.spacing(u'所以,請問Jackey的鼻子有幾個?3.14個!'), u'所以, 請問 Jackey 的鼻子有幾個? 3.14 個!')

        self.assertEqual(pangu.spacing('JUST WE就是JUST WE,既不偉大也不卑微!'), u'JUST WE 就是 JUST WE,既不偉大也不卑微!')
        self.assertEqual(pangu.spacing(u'JUST WE就是JUST WE,既不偉大也不卑微!'), u'JUST WE 就是 JUST WE,既不偉大也不卑微!')

        self.assertEqual(pangu.spacing('搭載MP3播放器,連續播放時數最長達到124小時的超強利刃……菊一文字RX-7!'), u'搭載 MP3 播放器,連續播放時數最長達到 124 小時的超強利刃…… 菊一文字 RX-7!')
        self.assertEqual(pangu.spacing(u'搭載MP3播放器,連續播放時數最長達到124小時的超強利刃……菊一文字RX-7!'), u'搭載 MP3 播放器,連續播放時數最長達到 124 小時的超強利刃…… 菊一文字 RX-7!')

        self.assertEqual(pangu.spacing('V'), u'V')
Пример #12
0
    def test_spacing(self):
        self.assertEqual(pangu.spacing('新八的構造成分有95%是眼鏡、3%是水、2%是垃圾'), u'新八的構造成分有 95% 是眼鏡、3% 是水、2% 是垃圾')
        self.assertEqual(pangu.spacing(u'新八的構造成分有95%是眼鏡、3%是水、2%是垃圾'), u'新八的構造成分有 95% 是眼鏡、3% 是水、2% 是垃圾')

        self.assertEqual(pangu.spacing('所以,請問Jackey的鼻子有幾個?3.14個!'), u'所以, 請問 Jackey 的鼻子有幾個? 3.14 個!')
        self.assertEqual(pangu.spacing(u'所以,請問Jackey的鼻子有幾個?3.14個!'), u'所以, 請問 Jackey 的鼻子有幾個? 3.14 個!')

        self.assertEqual(pangu.spacing('JUST WE就是JUST WE,既不偉大也不卑微!'), u'JUST WE 就是 JUST WE,既不偉大也不卑微!')
        self.assertEqual(pangu.spacing(u'JUST WE就是JUST WE,既不偉大也不卑微!'), u'JUST WE 就是 JUST WE,既不偉大也不卑微!')

        self.assertEqual(pangu.spacing('搭載MP3播放器,連續播放時數最長達到124小時的超強利刃……菊一文字RX-7!'), u'搭載 MP3 播放器,連續播放時數最長達到 124 小時的超強利刃…… 菊一文字 RX-7!')
        self.assertEqual(pangu.spacing(u'搭載MP3播放器,連續播放時數最長達到124小時的超強利刃……菊一文字RX-7!'), u'搭載 MP3 播放器,連續播放時數最長達到 124 小時的超強利刃…… 菊一文字 RX-7!')

        self.assertEqual(pangu.spacing('V'), u'V')
Пример #13
0
 def test_single_quote(self):
     self.assertEqual(u"前面 '中文 123 漢字' 後面", pangu.spacing("前面'中文123漢字'後面"))
     self.assertEqual(u"前面 '中文 123' 後面", pangu.spacing("前面'中文123'後面"))
     self.assertEqual(u"前面 '123 漢字' 後面", pangu.spacing("前面'123漢字'後面"))
     self.assertEqual(u"前面 '中文 123 漢字' tail", pangu.spacing("前面'中文123漢字' tail"))
     self.assertEqual(u"head '中文 123 漢字' 後面", pangu.spacing("head '中文123漢字'後面"))
     self.assertEqual(u"head '中文 123 漢字' tail", pangu.spacing("head '中文123漢字' tail"))
     self.assertEqual(u"陳上進 likes 林依諾's status.", pangu.spacing("陳上進 likes 林依諾's status."))
Пример #14
0
 def test_minus(self):
     self.assertEqual(pangu.spacing('前面-後面'), '前面 - 後面')
     self.assertEqual(pangu.spacing('前面 - 後面'), '前面 - 後面')
     self.assertEqual(pangu.spacing('Vinta-Mollie'), 'Vinta-Mollie')
     self.assertEqual(pangu.spacing('Vinta-陳上進'), 'Vinta - 陳上進')
     self.assertEqual(pangu.spacing('陳上進-Vinta'), '陳上進 - Vinta')
     self.assertEqual(pangu.spacing('得到一個A-B的結果'), '得到一個 A-B 的結果')
     self.assertEqual(pangu.spacing('长者的智慧和复杂的维斯特洛- 文章'), '长者的智慧和复杂的维斯特洛 - 文章')
Пример #15
0
 def test_plus(self):
     self.assertEqual(pangu.spacing('前面+後面'), u'前面 + 後面')
     self.assertEqual(pangu.spacing('前面 + 後面'), u'前面 + 後面')
     self.assertEqual(pangu.spacing('Vinta+Mollie'), u'Vinta+Mollie')
     self.assertEqual(pangu.spacing('Vinta+陳上進'), u'Vinta + 陳上進')
     self.assertEqual(pangu.spacing('陳上進+Vinta'), u'陳上進 + Vinta')
     self.assertEqual(pangu.spacing('得到一個A+B的結果'), u'得到一個 A+B 的結果')
     self.assertEqual(pangu.spacing('得到一個C++的結果'), u'得到一個 C++ 的結果')
Пример #16
0
 def test_plus(self):
     self.assertEqual(pangu.spacing('前面+後面'), u'前面 + 後面')
     self.assertEqual(pangu.spacing('前面 + 後面'), u'前面 + 後面')
     self.assertEqual(pangu.spacing('Vinta+Mollie'), u'Vinta+Mollie')
     self.assertEqual(pangu.spacing('Vinta+陳上進'), u'Vinta + 陳上進')
     self.assertEqual(pangu.spacing('陳上進+Vinta'), u'陳上進 + Vinta')
     self.assertEqual(pangu.spacing('得到一個A+B的結果'), u'得到一個 A+B 的結果')
     self.assertEqual(pangu.spacing('得到一個C++的結果'), u'得到一個 C++ 的結果')
Пример #17
0
 def test_single_quote(self):
     self.assertEqual(u"前面 '中文 123 漢字' 後面", pangu.spacing("前面'中文123漢字'後面"))
     self.assertEqual(u"前面 '中文 123' 後面", pangu.spacing("前面'中文123'後面"))
     self.assertEqual(u"前面 '123 漢字' 後面", pangu.spacing("前面'123漢字'後面"))
     self.assertEqual(u"前面 '中文 123 漢字' tail", pangu.spacing("前面'中文123漢字' tail"))
     self.assertEqual(u"head '中文 123 漢字' 後面", pangu.spacing("head '中文123漢字'後面"))
     self.assertEqual(u"head '中文 123 漢字' tail", pangu.spacing("head '中文123漢字' tail"))
     self.assertEqual(u"陳上進 likes 林依諾's status.", pangu.spacing("陳上進 likes 林依諾's status."))
Пример #18
0
    def test_greater_than(self):
        self.assertEqual(pangu.spacing('前面>後面'), '前面 > 後面')
        self.assertEqual(pangu.spacing('前面 > 後面'), '前面 > 後面')
        self.assertEqual(pangu.spacing('Vinta>Mollie'), 'Vinta>Mollie')
        self.assertEqual(pangu.spacing('Vinta>陳上進'), 'Vinta > 陳上進')
        self.assertEqual(pangu.spacing('陳上進>Vinta'), '陳上進 > Vinta')
        self.assertEqual(pangu.spacing('得到一個A>B的結果'), '得到一個 A>B 的結果')

        self.assertEqual(pangu.spacing('得到一個A>B的結果'), '得到一個 A>B 的結果')
Пример #19
0
 def test_braces(self):
     self.assertEqual(pangu.spacing('前面{中文123漢字}後面'), u'前面 {中文 123 漢字} 後面')
     self.assertEqual(pangu.spacing('前面{中文123}後面'), u'前面 {中文 123} 後面')
     self.assertEqual(pangu.spacing('前面{123漢字}後面'), u'前面 {123 漢字} 後面')
     self.assertEqual(pangu.spacing('前面{中文123漢字} tail'), u'前面 {中文 123 漢字} tail')
     self.assertEqual(pangu.spacing('head {中文123漢字}後面'), u'head {中文 123 漢字} 後面')
     self.assertEqual(pangu.spacing('head {中文123漢字} tail'), u'head {中文 123 漢字} tail')
Пример #20
0
 def test_slash(self):
     self.assertEqual(pangu.spacing('前面/後面'), u'前面 / 後面')
     self.assertEqual(pangu.spacing('前面 / 後面'), u'前面 / 後面')
     self.assertEqual(pangu.spacing('Vinta/Mollie'), u'Vinta/Mollie')
     self.assertEqual(pangu.spacing('Vinta/陳上進'), u'Vinta / 陳上進')
     self.assertEqual(pangu.spacing('陳上進/Vinta'), u'陳上進 / Vinta')
     self.assertEqual(pangu.spacing('得到一個A/B的結果'), u'得到一個 A/B 的結果')
Пример #21
0
 def test_less_than(self):
     self.assertEqual(pangu.spacing('前面<後面'), u'前面 < 後面')
     self.assertEqual(pangu.spacing('前面 < 後面'), u'前面 < 後面')
     self.assertEqual(pangu.spacing('Vinta<Mollie'), u'Vinta<Mollie')
     self.assertEqual(pangu.spacing('Vinta<陳上進'), u'Vinta < 陳上進')
     self.assertEqual(pangu.spacing('陳上進<Vinta'), u'陳上進 < Vinta')
     self.assertEqual(pangu.spacing('得到一個A<B的結果'), u'得到一個 A<B 的結果')
Пример #22
0
 def test_pipe(self):
     self.assertEqual(pangu.spacing('前面|後面'), u'前面 | 後面')
     self.assertEqual(pangu.spacing('前面 | 後面'), u'前面 | 後面')
     self.assertEqual(pangu.spacing('Vinta|Mollie'), u'Vinta|Mollie')
     self.assertEqual(pangu.spacing('Vinta|陳上進'), u'Vinta | 陳上進')
     self.assertEqual(pangu.spacing('陳上進|Vinta'), u'陳上進 | Vinta')
     self.assertEqual(pangu.spacing('得到一個A|B的結果'), u'得到一個 A|B 的結果')
Пример #23
0
 def test_equal(self):
     self.assertEqual(pangu.spacing('前面=後面'), u'前面 = 後面')
     self.assertEqual(pangu.spacing('前面 = 後面'), u'前面 = 後面')
     self.assertEqual(pangu.spacing('Vinta=Mollie'), u'Vinta=Mollie')
     self.assertEqual(pangu.spacing('Vinta=陳上進'), u'Vinta = 陳上進')
     self.assertEqual(pangu.spacing('陳上進=Vinta'), u'陳上進 = Vinta')
     self.assertEqual(pangu.spacing('得到一個A=B的結果'), u'得到一個 A=B 的結果')
Пример #24
0
 def test_minus(self):
     self.assertEqual(pangu.spacing('前面-後面'), u'前面 - 後面')
     self.assertEqual(pangu.spacing('前面 - 後面'), u'前面 - 後面')
     self.assertEqual(pangu.spacing('Vinta-Mollie'), u'Vinta-Mollie')
     self.assertEqual(pangu.spacing('Vinta-陳上進'), u'Vinta - 陳上進')
     self.assertEqual(pangu.spacing('陳上進-Vinta'), u'陳上進 - Vinta')
     self.assertEqual(pangu.spacing('得到一個A-B的結果'), u'得到一個 A-B 的結果')
Пример #25
0
 def test_asterisk(self):
     self.assertEqual(pangu.spacing('前面*後面'), u'前面 * 後面')
     self.assertEqual(pangu.spacing('前面 * 後面'), u'前面 * 後面')
     self.assertEqual(pangu.spacing('Vinta*Mollie'), u'Vinta*Mollie')
     self.assertEqual(pangu.spacing('Vinta*陳上進'), u'Vinta * 陳上進')
     self.assertEqual(pangu.spacing('陳上進*Vinta'), u'陳上進 * Vinta')
     self.assertEqual(pangu.spacing('得到一個A*B的結果'), u'得到一個 A*B 的結果')
Пример #26
0
 def test_ampersand(self):
     self.assertEqual(pangu.spacing('前面&後面'), u'前面 & 後面')
     self.assertEqual(pangu.spacing('前面 & 後面'), u'前面 & 後面')
     self.assertEqual(pangu.spacing('Vinta&Mollie'), u'Vinta&Mollie')
     self.assertEqual(pangu.spacing('Vinta&陳上進'), u'Vinta & 陳上進')
     self.assertEqual(pangu.spacing('陳上進&Vinta'), u'陳上進 & Vinta')
     self.assertEqual(pangu.spacing('得到一個A&B的結果'), u'得到一個 A&B 的結果')
Пример #27
0
 def test_brackets(self):
     self.assertEqual(pangu.spacing('前面[中文123漢字]後面'), u'前面 [中文 123 漢字] 後面')
     self.assertEqual(pangu.spacing('前面[中文123]後面'), u'前面 [中文 123] 後面')
     self.assertEqual(pangu.spacing('前面[123漢字]後面'), u'前面 [123 漢字] 後面')
     self.assertEqual(pangu.spacing('前面[中文123漢字] tail'), u'前面 [中文 123 漢字] tail')
     self.assertEqual(pangu.spacing('head [中文123漢字]後面'), u'head [中文 123 漢字] 後面')
     self.assertEqual(pangu.spacing('head [中文123漢字] tail'), u'head [中文 123 漢字] tail')
Пример #28
0
 def test_quote(self):
     self.assertEqual(pangu.spacing('前面"中文123漢字"後面'), u'前面 "中文 123 漢字" 後面')
     self.assertEqual(pangu.spacing('前面"中文123"後面'), u'前面 "中文 123" 後面')
     self.assertEqual(pangu.spacing('前面"123漢字"後面'), u'前面 "123 漢字" 後面')
     self.assertEqual(pangu.spacing('前面"中文123漢字" tail'), u'前面 "中文 123 漢字" tail')
     self.assertEqual(pangu.spacing('head "中文123漢字"後面'), u'head "中文 123 漢字" 後面')
     self.assertEqual(pangu.spacing('head "中文123漢字" tail'), u'head "中文 123 漢字" tail')
Пример #29
0
 def test_parentheses(self):
     self.assertEqual(pangu.spacing('前面(中文123漢字)後面'), u'前面 (中文 123 漢字) 後面')
     self.assertEqual(pangu.spacing('前面(中文123)後面'), u'前面 (中文 123) 後面')
     self.assertEqual(pangu.spacing('前面(123漢字)後面'), u'前面 (123 漢字) 後面')
     self.assertEqual(pangu.spacing('前面(中文123漢字) tail'), u'前面 (中文 123 漢字) tail')
     self.assertEqual(pangu.spacing('head (中文123漢字)後面'), u'head (中文 123 漢字) 後面')
     self.assertEqual(pangu.spacing('head (中文123漢字) tail'), u'head (中文 123 漢字) tail')
Пример #30
0
 def test_minus(self):
     self.assertEqual(pangu.spacing('前面-後面'), u'前面 - 後面')
     self.assertEqual(pangu.spacing('前面 - 後面'), u'前面 - 後面')
     self.assertEqual(pangu.spacing('Vinta-Mollie'), u'Vinta-Mollie')
     self.assertEqual(pangu.spacing('Vinta-陳上進'), u'Vinta - 陳上進')
     self.assertEqual(pangu.spacing('陳上進-Vinta'), u'陳上進 - Vinta')
     self.assertEqual(pangu.spacing('得到一個A-B的結果'), u'得到一個 A-B 的結果')
Пример #31
0
 def test_less_than_and_greater_than(self):
     self.assertEqual(pangu.spacing('前面<中文123漢字>後面'), u'前面 <中文 123 漢字> 後面')
     self.assertEqual(pangu.spacing('前面<中文123>後面'), u'前面 <中文 123> 後面')
     self.assertEqual(pangu.spacing('前面<123漢字>後面'), u'前面 <123 漢字> 後面')
     self.assertEqual(pangu.spacing('前面<中文123漢字> tail'), u'前面 <中文 123 漢字> tail')
     self.assertEqual(pangu.spacing('head <中文123漢字>後面'), u'head <中文 123 漢字> 後面')
     self.assertEqual(pangu.spacing('head <中文123漢字> tail'), u'head <中文 123 漢字> tail')
Пример #32
0
 def test_parentheses(self):
     self.assertEqual(pangu.spacing('前面(中文123漢字)後面'), u'前面 (中文 123 漢字) 後面')
     self.assertEqual(pangu.spacing('前面(中文123)後面'), u'前面 (中文 123) 後面')
     self.assertEqual(pangu.spacing('前面(123漢字)後面'), u'前面 (123 漢字) 後面')
     self.assertEqual(pangu.spacing('前面(中文123漢字) tail'), u'前面 (中文 123 漢字) tail')
     self.assertEqual(pangu.spacing('head (中文123漢字)後面'), u'head (中文 123 漢字) 後面')
     self.assertEqual(pangu.spacing('head (中文123漢字) tail'), u'head (中文 123 漢字) tail')
Пример #33
0
 def test_asterisk(self):
     self.assertEqual(pangu.spacing('前面*後面'), u'前面 * 後面')
     self.assertEqual(pangu.spacing('前面 * 後面'), u'前面 * 後面')
     self.assertEqual(pangu.spacing('Vinta*Mollie'), u'Vinta*Mollie')
     self.assertEqual(pangu.spacing('Vinta*陳上進'), u'Vinta * 陳上進')
     self.assertEqual(pangu.spacing('陳上進*Vinta'), u'陳上進 * Vinta')
     self.assertEqual(pangu.spacing('得到一個A*B的結果'), u'得到一個 A*B 的結果')
Пример #34
0
 def test_hash(self):
     self.assertEqual(pangu.spacing('前面#H2G2後面'), u'前面 #H2G2 後面')
     self.assertEqual(pangu.spacing('前面#銀河便車指南 後面'), u'前面 #銀河便車指南 後面')
     self.assertEqual(pangu.spacing('前面#銀河便車指南tail'), u'前面 #銀河便車指南 tail')
     self.assertEqual(pangu.spacing('前面#銀河公車指南 #銀河拖吊車指南 後面'), u'前面 #銀河公車指南 #銀河拖吊車指南 後面')
     self.assertEqual(pangu.spacing('前面#H2G2#後面'), u'前面 #H2G2# 後面')
     self.assertEqual(pangu.spacing('前面#銀河閃電霹靂車指南#後面'), u'前面 #銀河閃電霹靂車指南# 後面')
Пример #35
0
 def test_ampersand(self):
     self.assertEqual(pangu.spacing('前面&後面'), u'前面 & 後面')
     self.assertEqual(pangu.spacing('前面 & 後面'), u'前面 & 後面')
     self.assertEqual(pangu.spacing('Vinta&Mollie'), u'Vinta&Mollie')
     self.assertEqual(pangu.spacing('Vinta&陳上進'), u'Vinta & 陳上進')
     self.assertEqual(pangu.spacing('陳上進&Vinta'), u'陳上進 & Vinta')
     self.assertEqual(pangu.spacing('得到一個A&B的結果'), u'得到一個 A&B 的結果')
Пример #36
0
 def test_brackets(self):
     self.assertEqual(pangu.spacing('前面[中文123漢字]後面'), u'前面 [中文 123 漢字] 後面')
     self.assertEqual(pangu.spacing('前面[中文123]後面'), u'前面 [中文 123] 後面')
     self.assertEqual(pangu.spacing('前面[123漢字]後面'), u'前面 [123 漢字] 後面')
     self.assertEqual(pangu.spacing('前面[中文123漢字] tail'), u'前面 [中文 123 漢字] tail')
     self.assertEqual(pangu.spacing('head [中文123漢字]後面'), u'head [中文 123 漢字] 後面')
     self.assertEqual(pangu.spacing('head [中文123漢字] tail'), u'head [中文 123 漢字] tail')
Пример #37
0
 def test_comma(self):
     self.assertEqual(pangu.spacing('前面,後面'), '前面,後面')
     self.assertEqual(pangu.spacing('前面 , 後面'), '前面,後面')
     self.assertEqual(pangu.spacing('前面, 後面'), '前面,後面')
     self.assertEqual(pangu.spacing('前面 ,後面'), '前面,後面')
     self.assertEqual(pangu.spacing('前面,'), '前面,')
     self.assertEqual(pangu.spacing('前面, '), '前面,')
Пример #38
0
 def test_less_than(self):
     self.assertEqual(pangu.spacing('前面<後面'), u'前面 < 後面')
     self.assertEqual(pangu.spacing('前面 < 後面'), u'前面 < 後面')
     self.assertEqual(pangu.spacing('Vinta<Mollie'), u'Vinta<Mollie')
     self.assertEqual(pangu.spacing('Vinta<陳上進'), u'Vinta < 陳上進')
     self.assertEqual(pangu.spacing('陳上進<Vinta'), u'陳上進 < Vinta')
     self.assertEqual(pangu.spacing('得到一個A<B的結果'), u'得到一個 A<B 的結果')
Пример #39
0
 def test_greater_than(self):
     self.assertEqual(pangu.spacing('前面>後面'), u'前面 > 後面')
     self.assertEqual(pangu.spacing('前面 > 後面'), u'前面 > 後面')
     self.assertEqual(pangu.spacing('Vinta>Mollie'), u'Vinta>Mollie')
     self.assertEqual(pangu.spacing('Vinta>陳上進'), u'Vinta > 陳上進')
     self.assertEqual(pangu.spacing('陳上進>Vinta'), u'陳上進 > Vinta')
     self.assertEqual(pangu.spacing('得到一個A>B的結果'), u'得到一個 A>B 的結果')
Пример #40
0
 def test_slash(self):
     self.assertEqual(pangu.spacing('前面/後面'), u'前面 / 後面')
     self.assertEqual(pangu.spacing('前面 / 後面'), u'前面 / 後面')
     self.assertEqual(pangu.spacing('Vinta/Mollie'), u'Vinta/Mollie')
     self.assertEqual(pangu.spacing('Vinta/陳上進'), u'Vinta / 陳上進')
     self.assertEqual(pangu.spacing('陳上進/Vinta'), u'陳上進 / Vinta')
     self.assertEqual(pangu.spacing('得到一個A/B的結果'), u'得到一個 A/B 的結果')
Пример #41
0
 def test_less_than_and_greater_than(self):
     self.assertEqual(pangu.spacing('前面<中文123漢字>後面'), u'前面 <中文 123 漢字> 後面')
     self.assertEqual(pangu.spacing('前面<中文123>後面'), u'前面 <中文 123> 後面')
     self.assertEqual(pangu.spacing('前面<123漢字>後面'), u'前面 <123 漢字> 後面')
     self.assertEqual(pangu.spacing('前面<中文123漢字> tail'), u'前面 <中文 123 漢字> tail')
     self.assertEqual(pangu.spacing('head <中文123漢字>後面'), u'head <中文 123 漢字> 後面')
     self.assertEqual(pangu.spacing('head <中文123漢字> tail'), u'head <中文 123 漢字> tail')
Пример #42
0
 def test_hash(self):
     self.assertEqual(pangu.spacing('前面#H2G2後面'), u'前面 #H2G2 後面')
     self.assertEqual(pangu.spacing('前面#銀河便車指南 後面'), u'前面 #銀河便車指南 後面')
     self.assertEqual(pangu.spacing('前面#銀河便車指南tail'), u'前面 #銀河便車指南 tail')
     self.assertEqual(pangu.spacing('前面#銀河公車指南 #銀河拖吊車指南 後面'), u'前面 #銀河公車指南 #銀河拖吊車指南 後面')
     self.assertEqual(pangu.spacing('前面#H2G2#後面'), u'前面 #H2G2# 後面')
     self.assertEqual(pangu.spacing('前面#銀河閃電霹靂車指南#後面'), u'前面 #銀河閃電霹靂車指南# 後面')
Пример #43
0
 def test_quote(self):
     self.assertEqual(pangu.spacing('前面"中文123漢字"後面'), u'前面 "中文 123 漢字" 後面')
     self.assertEqual(pangu.spacing('前面"中文123"後面'), u'前面 "中文 123" 後面')
     self.assertEqual(pangu.spacing('前面"123漢字"後面'), u'前面 "123 漢字" 後面')
     self.assertEqual(pangu.spacing('前面"中文123漢字" tail'), u'前面 "中文 123 漢字" tail')
     self.assertEqual(pangu.spacing('head "中文123漢字"後面'), u'head "中文 123 漢字" 後面')
     self.assertEqual(pangu.spacing('head "中文123漢字" tail'), u'head "中文 123 漢字" tail')
Пример #44
0
 def test_pipe(self):
     self.assertEqual(pangu.spacing('前面|後面'), u'前面 | 後面')
     self.assertEqual(pangu.spacing('前面 | 後面'), u'前面 | 後面')
     self.assertEqual(pangu.spacing('Vinta|Mollie'), u'Vinta|Mollie')
     self.assertEqual(pangu.spacing('Vinta|陳上進'), u'Vinta | 陳上進')
     self.assertEqual(pangu.spacing('陳上進|Vinta'), u'陳上進 | Vinta')
     self.assertEqual(pangu.spacing('得到一個A|B的結果'), u'得到一個 A|B 的結果')
Пример #45
0
 def test_hash(self):
     self.assertEqual(pangu.spacing('前面#後面'), '前面 #後面')
     self.assertEqual(pangu.spacing('前面C#後面'), '前面 C# 後面')
     self.assertEqual(pangu.spacing('前面#H2G2後面'), '前面 #H2G2 後面')
     self.assertEqual(pangu.spacing('前面 #銀河便車指南 後面'), '前面 #銀河便車指南 後面')
     self.assertEqual(pangu.spacing('前面#銀河便車指南 後面'), '前面 #銀河便車指南 後面')
     self.assertEqual(pangu.spacing('前面#銀河公車指南 #銀河拖吊車指南 後面'), '前面 #銀河公車指南 #銀河拖吊車指南 後面')
Пример #46
0
 def test_braces(self):
     self.assertEqual(pangu.spacing('前面{中文123漢字}後面'), u'前面 {中文 123 漢字} 後面')
     self.assertEqual(pangu.spacing('前面{中文123}後面'), u'前面 {中文 123} 後面')
     self.assertEqual(pangu.spacing('前面{123漢字}後面'), u'前面 {123 漢字} 後面')
     self.assertEqual(pangu.spacing('前面{中文123漢字} tail'), u'前面 {中文 123 漢字} tail')
     self.assertEqual(pangu.spacing('head {中文123漢字}後面'), u'head {中文 123 漢字} 後面')
     self.assertEqual(pangu.spacing('head {中文123漢字} tail'), u'head {中文 123 漢字} tail')
Пример #47
0
 def test_equal(self):
     self.assertEqual(pangu.spacing('前面=後面'), u'前面 = 後面')
     self.assertEqual(pangu.spacing('前面 = 後面'), u'前面 = 後面')
     self.assertEqual(pangu.spacing('Vinta=Mollie'), u'Vinta=Mollie')
     self.assertEqual(pangu.spacing('Vinta=陳上進'), u'Vinta = 陳上進')
     self.assertEqual(pangu.spacing('陳上進=Vinta'), u'陳上進 = Vinta')
     self.assertEqual(pangu.spacing('得到一個A=B的結果'), u'得到一個 A=B 的結果')
Пример #48
0
 def say(self):
     orderlm = self.lm.order
     out = []
     for pos in self.generate_pos():
         if pos in punct:
             out.append(pos)
         elif pos in self.posvoc:
             bos = (len(out) <= orderlm + 2)
             history = ' '.join(out[-orderlm - 2:]) + ' '
             availvoc = self.posvoc[pos]
             idx, w = weighted_choice_king(
                 10**self.lm.score(history + c, bos, 0) for c in availvoc)
             c = availvoc[idx]
             out.append(c)
         else:
             out.append(pos)
     return pangu.spacing(''.join(joinword(out)))
Пример #49
0
 def say(self):
     orderlm = self.lm.order
     out = []
     for pos in self.generate_pos():
         if pos in punct:
             out.append(pos)
         elif pos in self.posvoc:
             bos = (len(out) <= orderlm + 2)
             history = ' '.join(out[-orderlm - 2:]) + ' '
             availvoc = self.posvoc[pos]
             idx, w = weighted_choice_king(
                 10**self.lm.score(history + c, bos, 0) for c in availvoc)
             c = availvoc[idx]
             out.append(c)
         else:
             out.append(pos)
     return pangu.spacing(''.join(joinword(out)))
Пример #50
0
def main():
    #s = read_from_clipboard()
    load_clipboard_im()
    #print (" | Start to process content in picture...")
    if Baidu_config["active"] is True:
        s = get_Baidu_res(image_path=CLIP_IMNAME)
    elif Tencent_config["active"] is True:
        s = get_Tencent_res(image_path=CLIP_IMNAME)
    else:
        assert (False), "No active service"
    if s != "":
        s = custom_rep(s)
        s = pangu.spacing(s)
        write_to_clipboard(s)
        print(s)
    else:
        print(" | No any characters...")
Пример #51
0
 def say(self, context=(), continuewords=()):
     context = context or continuewords
     ctxvoc = list(
         frozenset(self.voc).intersection(
             map(
                 self.voc.__getitem__,
                 frozenset(
                     itertools.chain.from_iterable(
                         map(
                             unpackvals,
                             map(
                                 self.ctx.__getitem__,
                                 filter(
                                     None,
                                     map(self.indexword,
                                         frozenset(context)))))))))
     ) or self.voc if context else self.voc
     out = []
     stack = list(continuewords)
     if stack:
         history = ' '.join(stack) + ' '
         idx, w = weighted_choice_king(10**self.lm.score(history + c, 1, 0)
                                       for c in ctxvoc)
     else:
         idx, w = weighted_choice_king(10**self.lm.score(c, 1, 0)
                                       for c in ctxvoc)
     out.append(ctxvoc[idx])
     stack.append(ctxvoc[idx])
     while 1:
         bos = (len(stack) <= self.lm.order + 2)
         history = ' '.join(stack[-self.lm.order - 2:]) + ' '
         idx, w = weighted_choice_king(
             10**self.lm.score(history + ctxvoc[k // 2], bos, k % 2)
             for k in range(len(ctxvoc) * 2))
         c = ctxvoc[idx // 2]
         out.append(c)
         stack.append(c)
         if idx % 2 or self.stopfn(out):
             break
     return pangu.spacing(''.join(joinword(out)))
Пример #52
0
 def parse_inline_text(self, m, root):
     content = m.group(0).replace('\n', '')
     root.append(pangu.spacing(content))
Пример #53
0
 def test_exclamation_mark(self):
     self.assertEqual(pangu.spacing('前面!後面'), u'前面! 後面')
     self.assertEqual(pangu.spacing('前面 ! 後面'), u'前面 ! 後面')
     self.assertEqual(pangu.spacing('前面! 後面'), u'前面! 後面')
Пример #54
0
 def test_enclosed_cjk_letters_and_months(self):
     self.assertEqual(pangu.spacing('abc㈱123'), u'abc ㈱ 123')
     self.assertEqual(pangu.spacing('abc ㈱ 123'), u'abc ㈱ 123')
Пример #55
0
 def test_back_quote(self):
     self.assertEqual(pangu.spacing('前面`後面'), u'前面 ` 後面')
     self.assertEqual(pangu.spacing('前面 ` 後面'), u'前面 ` 後面')
     self.assertEqual(pangu.spacing('前面` 後面'), u'前面 ` 後面')
Пример #56
0
 def test_tilde(self):
     self.assertEqual(pangu.spacing('前面~後面'), u'前面~ 後面')
     self.assertEqual(pangu.spacing('前面 ~ 後面'), u'前面 ~ 後面')
     self.assertEqual(pangu.spacing('前面~ 後面'), u'前面~ 後面')
Пример #57
0
 def test_cjk_compatibility_ideographs(self):
     self.assertEqual(pangu.spacing('abc車123'), u'abc 車 123')
     self.assertEqual(pangu.spacing('abc 車 123'), u'abc 車 123')
Пример #58
0
 def test_cjk_unified_ideographs(self):
     self.assertEqual(pangu.spacing('abc丁123'), u'abc 丁 123')
     self.assertEqual(pangu.spacing('abc 丁 123'), u'abc 丁 123')
Пример #59
0
 def test_cjk_unified_ideographs_extension_a(self):
     self.assertEqual(pangu.spacing('abc㐂123'), u'abc 㐂 123')
     self.assertEqual(pangu.spacing('abc 㐂 123'), u'abc 㐂 123')