<jupyter_start><jupyter_text>日本語教育語彙表による文の難易度推定 発表者: <NAME>  日本語教育語彙表- 約18000語の日本語教育用の語彙を収録- 作成における基礎として「現代日本語書き言葉均衡コーパス」と「日本語教科書コーパス」を利用- 5名の日本語教師が語彙難易度を判定レベル | 語彙例:- | :-初級前半 | 新しい、家、行く、今、大きい、教える、男、同じ、女、買う、書く、聞く、来る、車、子供、時間、仕事、写真、知る、好き、分かる、悪初級後半 | 間、上げる、一緒、入れる、多い、大きな、置く、思う、顔、彼女、彼、変わる、考える、決める、気持ち、声、心、言葉、自分、女性、呼ぶ中級前半 | 合わせる、受ける、多く、行う、返る、掛かる、形、関係、国民、情報、図、進める、中心、次、付く、続く、特に、人間、場合、必要、開く、増える、米国、平成、理由中級後半 | 得る、及び、掛ける、可能性、気、企業、加える、示す、重要、重要、状況、整備、地域、共、共、含む、認める、向ける、目指す、最も、求める、者、物、様、我が上級前半 | 確保、感じる、観点、極めて、裁判、定める、施策、実態、推移、推進、高まる、通ずる、常、背景、図る、果たす、踏まえる、経る、設ける、有する、連携上級後半 | 一環、講ずる、里、訴訟、太刀、調停、転ずる、あしらう、値する、厚紙、当て字、跡継ぎ、暴く、甘んずる、編み出す、アミノ酸、あやす、荒波  入力に用いたレベル別サンプルテキスト6段階のレベルイメージレベル | 能力記述文:- | :- 初級前半 | 単文を中心とする基礎的日本語表現に関して理解できる。複文や連体修飾構造などの複雑な文構造は理解できない。初級後半 | 基本的な語彙や文法項目について理解できる。テ形による基本的な複文なども理解できる。中級前半 | 比較的平易な文章に対する理解力があり、ある程度まとまった文章でも内容が把握できる。中級後半 | やや専門的な文章でも大まかな内容理解ができ、日常生活レベルの文章理解においてはほぼ不自由がなく遂行できる。上級前半 | 専門的な文章に関してもほぼ理解できる。文芸作品などに見られる複雑な構造についても理解できる。上級後半 | 高度に専門的な文章に関しても不自由なく、理解できる。日本語のあらゆるテキストに対して困難を感じない。  各レベルの文章例- 初級前半： 音楽がすきですから、よくCDを聞きます。日本がすきですから、日本語を勉強します。- 初級後半： むかしむかし、金が大好きな一人の王様がいました。ある日王様の家に一人の老人がやって来ました。- 中級前半： 毎週 1 回は祖母の家に子どもたちが孫たちをつれて集まります。祖母の80さいの誕生日には、マニラで一番大きなホテルを借りて、大家族の全員と親しい友人が、全部で 500 人以上集まりました。- 上級前半： 動物の動きにしてもそうで、ネズミはちょこまかしているし、ゾウはゆっくりと足を運んでいく。体のサイズと時間との間に、何か関係があるのではないかと、古来、いろいろな人が調べてきた。- 上級後半： 数学は，科学を記述する普遍的な言語であるという基本的な性格を持つ。また「自然は数学の言葉で書かれた書物である」とはガリレイの言である。<jupyter_code>from jatr import load_text
import jatr.vocab as jv

levels = ['初級前半', '初級後半', '中級前半', '中級後半', '上級前半', '上級後半']
level_lists = []
for item in levels:
    level_lists.append(jv.Vocab(load_text('../data/サンプルテキスト/' + item + '.txt')).level_list)
%matplotlib inline
import seaborn as sns
import japanize_matplotlib
import matplotlib.pyplot as plt
import pandas as pd

# https://stackoverflow.com/questions/40442014/python-pandas-valueerror-arrays-must-be-all-same-length/40442094
# https://stackoverflow.com/questions/19736080/creating-dataframe-from-a-dictionary-where-entries-have-different-lengths
df = pd.DataFrame.from_dict({level: level_lists[i] for i, level in enumerate(levels)}, orient='index')
df = df.transpose()
df.head()
# グラフの面積の合計が1になるように標準化
df.plot(kind='hist', subplots=True, layout=(2,3), bins=6, figsize=(10, 7), sharey=True, density=True)
plt.figure(figsize=(10,6))
sns.boxenplot(data=df)
# sns.violinplot(data=df)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.15423728813559323, 'fraction_numerical': 0.019915254237288134, 'mean_word_length': 10.746268656716419, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 6, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '318663', 'license': 'MIT', 'n_tokens_mistral': 1915, 'n_tokens_neox': 1924, 'n_words': 103, 'path': 'notebooks/201906-slide.ipynb', 'repo_name': 'crazymaster/jats', 'size': '2359'}