In [1]:
from janome.tokenizer import Tokenizer
from janome.analyzer import Analyzer
from janome.charfilter import *
from janome.tokenfilter import *

In [2]:
t = Tokenizer()

In [3]:
s = '<div>PythonとPYTHONとパイソンとパイソン</div>'

In [4]:
for token in t.tokenize(s):
    print(token)


<	名詞,サ変接続,*,*,*,*,<,*,*
div	名詞,一般,*,*,*,*,div,*,*
>	名詞,サ変接続,*,*,*,*,>,*,*
Python	名詞,一般,*,*,*,*,Python,*,*
と	助詞,並立助詞,*,*,*,*,と,ト,ト
PYTHON	名詞,固有名詞,組織,*,*,*,PYTHON,*,*
と	助詞,並立助詞,*,*,*,*,と,ト,ト
パイソン	名詞,一般,*,*,*,*,パイソン,*,*
と	助詞,並立助詞,*,*,*,*,と,ト,ト
パイソン	名詞,一般,*,*,*,*,パイソン,*,*
</	名詞,サ変接続,*,*,*,*,</,*,*
div	名詞,一般,*,*,*,*,div,*,*
>	名詞,サ変接続,*,*,*,*,>,*,*

In [5]:
char_filters = [UnicodeNormalizeCharFilter(),
                RegexReplaceCharFilter('<.*?>', '')]

In [6]:
token_filters = [POSKeepFilter(['名詞']),
                 LowerCaseFilter(),
                 ExtractAttributeFilter('surface')]

In [7]:
a = Analyzer(char_filters=char_filters, token_filters=token_filters)

In [8]:
for token in a.analyze(s):
    print(token)


python
python
パイソン
パイソン

In [9]:
s = '自然言語処理による日本国憲法の形態素解析'

In [10]:
for token in t.tokenize(s):
    print(token)


自然	名詞,形容動詞語幹,*,*,*,*,自然,シゼン,シゼン
言語	名詞,一般,*,*,*,*,言語,ゲンゴ,ゲンゴ
処理	名詞,サ変接続,*,*,*,*,処理,ショリ,ショリ
による	助詞,格助詞,連語,*,*,*,による,ニヨル,ニヨル
日本国	名詞,固有名詞,地域,国,*,*,日本国,ニッポンコク,ニッポンコク
憲法	名詞,一般,*,*,*,*,憲法,ケンポウ,ケンポー
の	助詞,連体化,*,*,*,*,の,ノ,ノ
形態素	名詞,一般,*,*,*,*,形態素,ケイタイソ,ケイタイソ
解析	名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキ

In [11]:
a = Analyzer(token_filters=[CompoundNounFilter()])

In [12]:
for token in a.analyze(s):
    print(token)


自然言語処理	名詞,複合,*,*,*,*,自然言語処理,シゼンゲンゴショリ,シゼンゲンゴショリ
による	助詞,格助詞,連語,*,*,*,による,ニヨル,ニヨル
日本国憲法	名詞,複合,*,*,*,*,日本国憲法,ニッポンコクケンポウ,ニッポンコクケンポー
の	助詞,連体化,*,*,*,*,の,ノ,ノ
形態素解析	名詞,複合,*,*,*,*,形態素解析,ケイタイソカイセキ,ケイタイソカイセキ

In [13]:
s = '人民の人民による人民のための政治'

In [14]:
a = Analyzer(token_filters=[POSKeepFilter(['名詞']), TokenCountFilter()])

In [15]:
g_count = a.analyze(s)
print(type(g_count))


<class 'generator'>

In [16]:
for i in g_count:
    print(i)


('人民', 3)
('ため', 1)
('政治', 1)

In [17]:
l_count = list(a.analyze(s))
print(type(l_count))


<class 'list'>

In [18]:
print(l_count)


[('人民', 3), ('ため', 1), ('政治', 1)]

In [19]:
d_count = dict(a.analyze(s))
print(type(d_count))


<class 'dict'>

In [20]:
print(d_count)


{'人民': 3, 'ため': 1, '政治': 1}

In [21]:
print(d_count['人民'])


3

In [22]:
# print(d_count['国民'])
# KeyError: '国民'

In [23]:
print(d_count.get('国民', 0))


0

In [24]:
s = '走れと言われたので走ると言った'

In [25]:
a = Analyzer(token_filters=[TokenCountFilter()])

In [26]:
print(list(a.analyze(s)))


[('走れ', 1), ('と', 2), ('言わ', 1), ('れ', 1), ('た', 2), ('ので', 1), ('走る', 1), ('言っ', 1)]

In [27]:
a = Analyzer(token_filters=[TokenCountFilter(att='base_form')])

In [28]:
print(list(a.analyze(s)))


[('走る', 2), ('と', 2), ('言う', 2), ('れる', 1), ('た', 2), ('ので', 1)]

In [29]:
a = Analyzer(token_filters=[TokenCountFilter(att='part_of_speech')])

In [30]:
print(list(a.analyze(s)))


[('動詞,自立,*,*', 4), ('助詞,格助詞,引用,*', 2), ('動詞,接尾,*,*', 1), ('助動詞,*,*,*', 2), ('助詞,接続助詞,*,*', 1)]

In [31]:
s = '吾輩は猫である'

In [32]:
a = Analyzer(token_filters=[POSKeepFilter('助動詞')])

In [33]:
for token in a.analyze(s):
    print(token)


は	助詞,係助詞,*,*,*,*,は,ハ,ワ
で	助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある	助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル

In [34]:
a = Analyzer(token_filters=[POSKeepFilter(['助動詞'])])

In [35]:
for token in a.analyze(s):
    print(token)


で	助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある	助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル