File size: 5,449 Bytes
5f7a558
 
 
 
4a6dc69
 
5f7a558
 
770d00e
1c38e22
5f7a558
 
 
4a6dc69
5f7a558
 
770d00e
5f7a558
 
 
 
 
 
 
 
770d00e
5f7a558
770d00e
5f7a558
770d00e
5f7a558
770d00e
5f7a558
770d00e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5f7a558
 
 
770d00e
 
1c38e22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5a0e689
1c38e22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import streamlit as st
from jreadability import compute_readability

st.set_page_config(
    page_title='jReadability demo',
    page_icon='favicon.svg',
)

st.markdown("[Code for jreadability python [package](https://github.com/joshdavham/jreadability) and [demo](https://github.com/joshdavham/jreadability-demo)]")

lower_intermediate_text = "茶々はわたしの日本語の先輩でした。毎日、日本語を一生懸命勉強して3か月ぐらいたったころには、日本人の友達といろいろな話もできるようになりました。そして茶々よりも日本語がわかるようになりました。けれどわたしの日本語の発音はまだ上手ではありません。家の人はわかってくれますが、茶々はわかりません。「おいで」と言っても茶々は来ません。「ちょっと見てごらん」と言っても見ません。「散歩に行こう」と言ってもふりむいてくれません。だから、いっしょに散歩することもできません。わたしの発音が家の人とちがうからです。それが大変ざんねんでした。それで、わたしはテープをたくさん聞いて練習しました。そして、はじめて茶々がわたしの「おいで」を聞いて、わたしのところへ来てくれた時は、本当にうれしくなりました。\
    わたしの日本語がやっと茶々につうじたからです。今は、わたしは日本の生活にだいぶなれました。茶々はもう、わたしの日本語が大体わかりますから、毎日いっしょに散歩します。わたしの日本語の先輩、茶々のおかげで日本語も上手になったし、犬がこわくなくなって、犬が好きになりました。今度、わたしは茶々に中国語を教えようと思います。そして、中国語と日本語と、二つのことばのわかる犬にするつもりです。"

st.image("logo.svg", use_column_width=False, width=350)

text = st.text_area(
    label="Input Japanese text below and then click the button",
    label_visibility='visible',
    height=350,
    max_chars=None,
    key='text-input',
    placeholder='Enter a paragraph of Japanese text.',
    value = lower_intermediate_text,
)

if st.button("Compute readability"):

    if text:

        score = compute_readability(text)

        if 0.5 <= score < 6.5:

            if 0.5 <= score < 1.5:
                st.error(f"Readability score: **{score:.2f}**  \nLevel: **Upper-advanced**")
            elif 1.5 <= score < 2.5:
                st.error(f"Readability score: **{score:.2f}**  \nLevel: **Lower-advanced**")
            elif 2.5 <= score < 3.5:
                st.info(f"Readability score: **{score:.2f}**  \nLevel: **Upper-intermediate**")
            elif 3.5 <= score < 4.5:
                st.info(f"Readability score: **{score:.2f}**  \nLevel: **Lower-intermediate**")
            elif 4.5 <= score < 5.5:
                st.success(f"Readability score: **{score:.2f}**  \nLevel: **Upper-elementary**")
            elif 5.5 <= score < 6.5:
                st.success(f"Readability score: **{score:.2f}**  \nLevel: **Lower-elementary**")

            st.progress(1-((score - 0.5) / 6.0) )

        else:

            st.warning(f"Readability score: **{score:.2f}**  \nLevel: **Undefined**") 

    else:

        st.info(f"Readability score:  \nLevel:")
        st.progress(0.0)

else:

    st.info(f"Readability score:  \nLevel:")
    st.progress(0.0)

st.markdown("---")

st.markdown(
    """         
    ## Readability scores

    | Level              | Readability score range |
    |--------------------|-------------------------|
    | Upper-advanced     | [0.5, 1.5)                 |
    | Lower-advanced     | [1.5, 2.5)               |
    | Upper-intermediate | [2.5, 3.5)               |
    | Lower-intermediate | [3.5, 4.5)               |
    | Upper-elementary   | [4.5, 5.5)               |
    | Lower-elementary   | [5.5, 6.5)               |
    """
)

st.markdown(
    """
    ### Model

    ```
    readability = {mean number of words per sentence} * -0.056
                + {percentage of kango} * -0.126
                + {percentage of wago} * -0.042
                + {percentage of verbs} * -0.145
                + {percentage of particles} * -0.044
                + 11.724
    ```

    *\\* "kango" (漢語) means Japanese word of Chinese origin while "wago" (和語) means native Japanese word.*

    """
)

st.markdown("---")

st.markdown(
    """
    ### About

    This website simply serves as a demo of the [jreadability python package](https://github.com/joshdavham/jreadability) which is an unofficial implementation of the model developed by 
    Jae-ho Lee and Yoichiro Hasebe in [Introducing a readability evaluation system for Japanese language education](https://jreadability.net/file/hasebe-lee-2015-castelj.pdf) 
    and [Readability measurement of Japanese texts based on levelled corpora](https://researchmap.jp/jhlee/published_papers/21426109).

    This website is also heavily inspired from the official [jreadability.net](https://jreadability.net/sys/en) (which is a much better site!)
    
    As for why I built this demo, I was just inspired by Paul O'Leary McCann's [demo](https://fugashi.streamlit.app/) of [fugashi](https://github.com/polm/fugashi) and thought it'd be cool if more python packages had demos like that.
    """
)