def test_analyse2(self): doc = deko.parse_doc(txt) self.assertEqual(len(doc), 1) self.assertEqual(len(doc[0]), 4) self.assertEqual('雨が降る。', str(doc[0])) # 2 sentences results = [ deko.parse_doc(txt2), deko.parse_doc(txt2, splitlines=False) ] for doc in results: self.assertEqual(2, len(doc)) self.assertEqual(5, len(doc[0])) self.assertEqual(5, len(doc[1])) self.assertEqual('猫が好きです。', str(doc[0])) self.assertEqual('犬も好きです。', str(doc[1])) self.assertEqual(['猫', 'が', '好き', 'です', '。'], list(doc[0].tokens.values())) self.assertEqual(['犬', 'も', '好き', 'です', '。'], list(doc[1].tokens.values()))
def test_dekomecab(self): # try parsing text using mecab binary self.assertRaises( FileNotFoundError, lambda: parse(txt, mecab_loc='/usr/bin/path/to/mecab-binary-app')) self.assertRaises( FileNotFoundError, lambda: analyse( txt, mecab_loc='/usr/bin/path/to/mecab-binary-app')) self.assertRaises( FileNotFoundError, lambda: deko.parse(txt, mecab_loc='/usr/bin/path/to/mecab-binary-app')) self.assertRaises( FileNotFoundError, lambda: deko.parse_doc( txt, mecab_loc='/usr/bin/path/to/mecab-binary-app'))
def test_analyse_multiple_sents(self): sent = parse(txt4) expected_tokens = [ '猫', 'が', '好き', 'です', '。', '犬', 'も', '好き', 'です', '。', '鳥', 'は' ] tokens = list(sent.tokens.values()) self.assertEqual(tokens, expected_tokens) # check reading readings = [tk.reading_hira for tk in sent] expected_readings = [ 'ねこ', 'が', 'すき', 'です', '。', 'いぬ', 'も', 'すき', 'です', '。', 'とり', 'は' ] self.assertEqual(readings, expected_readings) # try tokenizing sentences doc = deko.parse_doc(txt4, splitlines=False) expected = [['猫が好きです。', ['猫', 'が', '好き', 'です', '。']], ['犬も好きです。', ['犬', 'も', '好き', 'です', '。']], ['鳥は', ['鳥', 'は']]] actual = [[sent.text, list(sent.tokens.values())] for sent in doc] self.assertEqual(expected, actual) # try tokenize text to sentences sents = deko.tokenize_sent(txt4) expected = ['猫が好きです。', '犬も好きです。', '鳥は'] self.assertEqual(expected, sents)
def test_write_json(self): from chirptext import deko doc = deko.parse_doc('三毛猫が好きです。雨が降る。女の子はケーキを食べる。', splitlines=False) ttl.write_json(TEST_DATA / 'testx.json', doc)
def test_func_alias(self): sent = deko.parse(txt) self.assertEqual(sent.words, ['雨', 'が', '降る', '。']) doc = deko.parse_doc(txt3, splitlines=False) self.assertEqual(len(doc), 3)
def test_func_alias(self): sent = parse(txt) self.assertEqual(sent.tokens.values(), ['雨', 'が', '降る', '。']) doc = parse_doc(txt3, splitlines=False) self.assertEqual(len(doc), 3)
def test_not_split(self): doc = deko.parse_doc(txt3, splitlines=False) docx = deko.parse_doc(txt3, splitlines=True) doc_words = [x.text for x in doc] docx_words = [x.text for x in docx] self.assertEqual(doc_words, docx_words)
def test_deko_ttl(self): sent = parse(txt) sj = sent.to_dict() expected = { 'text': '雨が降る。', 'tokens': [{ 'cfrom': 0, 'cto': 1, 'lemma': '雨', 'pos': '名詞', 'tags': [{ 'type': 'sc1', 'value': '一般' }, { 'type': 'pos3', 'value': '名詞-一般' }, { 'type': 'reading_hira', 'value': 'あめ' }], 'text': '雨' }, { 'cfrom': 1, 'cto': 2, 'lemma': 'が', 'pos': '助詞', 'tags': [{ 'type': 'sc1', 'value': '格助詞' }, { 'type': 'sc2', 'value': '一般' }, { 'type': 'pos3', 'value': '助詞-格助詞-一般' }, { 'type': 'reading_hira', 'value': 'が' }], 'text': 'が' }, { 'cfrom': 2, 'cto': 4, 'lemma': '降る', 'pos': '動詞', 'tags': [{ 'type': 'sc1', 'value': '自立' }, { 'type': 'inf', 'value': '五段・ラ行' }, { 'type': 'conj', 'value': '基本形' }, { 'type': 'pos3', 'value': '動詞-自立' }, { 'type': 'reading_hira', 'value': 'ふる' }], 'text': '降る' }, { 'cfrom': 4, 'cto': 5, 'lemma': '。', 'pos': '記号', 'tags': [{ 'type': 'sc1', 'value': '句点' }, { 'type': 'pos3', 'value': '記号-句点' }, { 'type': 'reading_hira', 'value': '。' }], 'text': '。' }] } self.assertEqual(sj, expected) # test doc to ttl ttl_doc = deko.parse_doc(txt3, splitlines=True) self.assertEqual(len(ttl_doc), 3) for sent, sent_text in zip(ttl_doc, txt3.splitlines()): tokens = deko.tokenize(sent_text, use_wakati=True) self.assertEqual(sent.text, sent_text) self.assertEqual(tokens, list(sent.tokens.values()))