Esempio n. 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')
Esempio n. 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')
Esempio n. 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'前面 ‧ 後面')
Esempio n. 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'前面 ‧ 後面')
Esempio n. 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 (数据库集合) 的变更事件流')
Esempio n. 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 的內容時')
Esempio n. 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)))
Esempio n. 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)))
Esempio n. 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))
Esempio n. 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 後面')
Esempio n. 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')
Esempio n. 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')
Esempio n. 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."))
Esempio n. 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('长者的智慧和复杂的维斯特洛- 文章'), '长者的智慧和复杂的维斯特洛 - 文章')
Esempio n. 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++ 的結果')
Esempio n. 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++ 的結果')
Esempio n. 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."))
Esempio n. 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 的結果')
Esempio n. 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')
Esempio n. 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 的結果')
Esempio n. 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 的結果')
Esempio n. 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 的結果')
Esempio n. 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 的結果')
Esempio n. 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 的結果')
Esempio n. 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 的結果')
Esempio n. 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 的結果')
Esempio n. 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')
Esempio n. 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')
Esempio n. 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')
Esempio n. 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 的結果')
Esempio n. 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')
Esempio n. 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')
Esempio n. 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 的結果')
Esempio n. 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'前面 #銀河閃電霹靂車指南# 後面')
Esempio n. 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 的結果')
Esempio n. 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')
Esempio n. 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('前面, '), '前面,')
Esempio n. 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 的結果')
Esempio n. 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 的結果')
Esempio n. 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 的結果')
Esempio n. 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')
Esempio n. 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'前面 #銀河閃電霹靂車指南# 後面')
Esempio n. 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')
Esempio n. 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 的結果')
Esempio n. 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('前面#銀河公車指南 #銀河拖吊車指南 後面'), '前面 #銀河公車指南 #銀河拖吊車指南 後面')
Esempio n. 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')
Esempio n. 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 的結果')
Esempio n. 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)))
Esempio n. 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)))
Esempio n. 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...")
Esempio n. 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)))
Esempio n. 52
0
 def parse_inline_text(self, m, root):
     content = m.group(0).replace('\n', '')
     root.append(pangu.spacing(content))
Esempio n. 53
0
 def test_exclamation_mark(self):
     self.assertEqual(pangu.spacing('前面!後面'), u'前面! 後面')
     self.assertEqual(pangu.spacing('前面 ! 後面'), u'前面 ! 後面')
     self.assertEqual(pangu.spacing('前面! 後面'), u'前面! 後面')
Esempio n. 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')
Esempio n. 55
0
 def test_back_quote(self):
     self.assertEqual(pangu.spacing('前面`後面'), u'前面 ` 後面')
     self.assertEqual(pangu.spacing('前面 ` 後面'), u'前面 ` 後面')
     self.assertEqual(pangu.spacing('前面` 後面'), u'前面 ` 後面')
Esempio n. 56
0
 def test_tilde(self):
     self.assertEqual(pangu.spacing('前面~後面'), u'前面~ 後面')
     self.assertEqual(pangu.spacing('前面 ~ 後面'), u'前面 ~ 後面')
     self.assertEqual(pangu.spacing('前面~ 後面'), u'前面~ 後面')
Esempio n. 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')
Esempio n. 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')
Esempio n. 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')