import nltk
import numpy as np
import re
import copy


from scipy import stats
from scipy.stats import spearmanr




#記述的レベル
kizyututeki = [352.  635.   568.   705.   650.   702.   686.   392.   411.   378.
   345.   507.   546.   503.   507.   502.   576.   405.   584.   579.
   352.   526.   460.   517.   510.   499.   364.   628.   527.   536.
   535.   566. 15527. 38403. 12099. 26721. 22053. 26281. 25377. 32085.
 28842. 38225. 39433. 13438. 30291. 38877. 11309. 19125. 25240. 18317.
 23100. 22356. 14903. 23251. 28456. 38676.  2163. 25952. 30630. 25645.
 17593. 25060. 20917. 28842.]

#テキストの使いやすさレベル
tukaiyasusa = [ 1.297  0.875 -0.047  0.973  0.41  -0.192  1.222  0.233 -0.175  0.519
  0.561 -0.436 -0.104  0.421  0.545  0.172 -0.569 -1.153  2.113  0.274
  1.883 -0.008  1.024  0.301  0.133  0.168  0.567 -0.114  0.222  1.516
  0.268  0.116 -0.594 -0.491 -0.708  0.03  -1.043  0.445 -0.896 -0.218
  0.067 -0.056  0.175  0.471 -1.423 -0.042  0.404 -0.076 -1.515 -1.328
 -1.347 -0.646 -1.428 -0.165 -1.177 -0.48  -0.975 -1.392 -0.921  0.736
 -1.65   0.175 -1.141  0.072]

#参照の結束性レベル
sansyou = [0.154 0.102 0.075 0.094 0.098 0.056 0.065 0.121 0.056 0.088 0.162 0.109
 0.126 0.066 0.106 0.087 0.08  0.044 0.081 0.035 0.087 0.109 0.058 0.071
 0.125 0.099 0.048 0.087 0.168 0.09  0.129 0.13  0.118 0.106 0.118 0.083
 0.036 0.115 0.06  0.079 0.084 0.081 0.067 0.108 0.053 0.07  0.122 0.048
 0.049 0.035 0.029 0.049 0.062 0.102 0.057 0.07  0.035 0.052 0.102 0.07
 0.024 0.055 0.074 0.084]

#LSAレベル
lsa = [0.122 0.137 0.111 0.099 0.172 0.08  0.127 0.153 0.11  0.13  0.191 0.121
 0.118 0.16  0.293 0.154 0.147 0.096 0.123 0.107 0.124 0.188 0.158 0.058
 0.144 0.155 0.065 0.172 0.212 0.182 0.195 0.191 0.103 0.087 0.085 0.08
 0.079 0.06  0.075 0.039 0.079 0.039 0.103 0.05  0.081 0.049 0.058 0.053
 0.083 0.091 0.065 0.062 0.085 0.078 0.065 0.092 0.074 0.09  0.15  0.045
 0.052 0.08  0.102 0.079]

#連続語レベル
renzokugo = [ 5.682 20.472 29.93  19.858 23.077 17.094 39.359 15.306 12.165 10.582
  8.696  9.862 10.989 17.893 29.586 37.849  8.681 12.346 20.548 25.907
 34.091  7.605 15.217 11.605 33.333 18.036 10.989  6.369 20.873  5.597
 33.645 10.601 21.833 27.784 18.349 18.3   27.525 20.243 28.017 21.879
 21.323 22.054 24.244 30.436 26.047 22.044 25.113 18.248 21.91  21.51
 23.203 28.315 28.182 23.01  25.689 23.658 21.267 26.395 14.789 21.018
 24.214 20.431 27.203 21.323]

#状況モデルレベル
zyoukyoumoderu = [36.932 42.52  56.338 21.277 33.846 45.584 26.239 63.776 51.095 50.265
 37.681 84.813 51.282 31.809 57.199 37.849 38.194 61.728 35.959 27.634
 68.182 96.958 47.826 56.093 54.902 50.1   52.198 22.293 62.619 48.507
 33.645 53.004 31.687 20.389 38.185 16.616 21.72  34.245 50.006 33.287
 24.478 28.044 19.07  26.343 17.794 26.931 23.344 38.118 21.989 32.975
 45.411 26.257 37.308 29.289 21.507 22.934 18.031 32.059 13.581 24.332
 23.475 16.52  16.781 24.478]

#構文の複雑さレベル
koubunnohukuzatusa = [0.82  0.907 0.917 0.899 0.89  0.928 0.892 0.876 0.938 0.914 0.833 0.886
 0.85  0.902 0.837 0.891 0.927 0.949 0.858 0.912 0.898 0.901 0.915 0.906
 0.865 0.88  0.957 0.922 0.832 0.887 0.905 0.89  0.894 0.874 0.888 0.908
 0.97  0.883 0.948 0.906 0.901 0.908 0.874 0.858 0.945 0.913 0.876 0.95
 0.951 0.959 0.971 0.951 0.938 0.901 0.944 0.906 0.945 0.949 0.867 0.904
 0.973 0.899 0.933 0.901]

#構文パターン密度レベル
koubun = [150.568 203.15  250.    200.    204.615 266.382 237.609 224.49  228.71
 253.968 333.333 264.3   278.388 250.497 205.128 243.028 208.333 237.037
 253.425 217.617 298.295 243.346 269.565 237.911 213.726 224.449 228.022
 251.592 288.425 289.179 267.29  226.148 248.342 243.809 249.855 236.518
 224.278 242.647 281.357 233.879 219.021 239.529 151.979 191.546 197.98
 206.96  217.88  220.758 215.729 209.15  228.268 209.519 209.287 253.796
 223.327 235.288 192.325 212.431 165.426 237.434 209.174 166.76  212.793
 219.021]

#単語情報レベル
tangozyouhou = [594.2   588.709 595.149 586.237 585.869 587.877 584.697 602.664 590.348
 590.71  597.333 596.815 591.989 590.48  575.617 582.919 576.544 595.507
 583.804 583.108 595.855 596.07  594.694 580.055 581.149 584.798 596.312
 584.199 597.414 595.828 589.126 590.646 575.664 563.56  574.078 574.851
 567.568 579.8   576.229 574.359 572.911 578.083 554.564 566.522 561.752
 569.114 573.495 575.259 568.107 562.233 568.595 567.338 563.754 574.391
 570.349 566.346 560.707 564.613 552.126 579.217 561.816 566.197 570.606
 572.911]

kizyututeki.split()
tukaiyasusa.split()
sansyou.split()
lsa.split()
renzokugo.split()
zyoukyoumoderu.split()
koubunnohukuzatusa.split()
koubun.split()
tangozyouhou.split()


level_soukan_dic={"３つの接続詞のzスコア": 0.6599890232784251, "隣接する文との内容語の重複の標準偏差": 0.5083065285904638, 
            "隣接する文のコサイン類似度": -0.18760245477022275,"時間的接続詞の発生率": 0.342612618128205,
            "時制の繰り返しの平均": 0.6285245987567255, "前置詞句の発生スコア": 0.3667653286504391,
            "一人称単数代名詞の発生率": 0.23318079080290005}

level_number_dic={0: "記述的", 1: "テキストの使いやすさ", 2: "参照の結束性",
                3: "lsa", 4: "接続詞レベル", 5: "状況モデル", 6: "構文の複雑さレベル", 7:"構文のパターンレベル", 8:"単語情報レベル"}


level_sihyou_dic={0: kizyututeki,1: tukaiyasusa, 2: sansyou, 3: lsa, 4: renzokugo,
            5: zyoukyoumoderu, 6: koubunnohukuzatusa 7: koubun, 8: tangozyouhou}



kazu=0
soukan=0
keisan_kaisuu=0
soukankekka={}
soukankekka_upper={}#相関が高かったものだけ入れるディクショナリ
while kazu < 8:

    keisan_kaisuu=kazu+1

    while keisan_kaisuu < 9:

        #相関計算
        x_np = np.array(level_sihyou_dic[kazu])
        y_np = np.array(level_sihyou_dic[keisan_kaisuu])


        #シャピロウィルク検定で正規性の確認
        #w値とp_value
        shap_w_x, shap_p_value_x = stats.shapiro(level_sihyou_dic[kazu])
        shap_w_y, shap_p_value_y = stats.shapiro(level_sihyou_dic[keisan_kaisuu])

        #p_valueが0.05以上なら，帰無仮説が採択→正規性がある
        if shap_p_value_x >= 0.05 and shap_p_value_y >= 0.05:
            #print("正規性があるといえる")

            #ピアソンの相関係数をとる
            # 相関行列を計算
            coef = np.corrcoef(x_np, y_np)
            soukan = coef[0][1]


        #p_valueが0.05以下なら，帰無仮説が棄却→正規性がない
        else:
            #print("正規性があるといえない")
   
            #スピアマンの順位相関係数
            correlation, pvalue = spearmanr(x_np, y_np)
            soukan = correlation

        
        soukankekka[level_number_dic[kazu]+ " - " + level_number_dic[keisan_kaisuu]] = soukan # パラメータ，相関の結果
        #相関が高かったら，ディクショナリに入れる
        if abs(soukan) >= 0.7:
            soukankekka_upper[level_number_dic[kazu]+ " - " + level_number_dic[keisan_kaisuu]] = soukan # パラメータ，相関の結果
        

        keisan_kaisuu+=1
        
    
    kazu+=1

    



#パラメータ番号と相関係数の結果を，相関係数の大きい順で表示
for s in soukankekka:
    print(s)
    print(soukankekka[s])
            
print("------")


#相関が0.7以上のものがあるか
if soukankekka_upper:
    print("相関係数が0.7以上あったもの")
    for s in soukankekka_upper:
        print(s)
        print(soukankekka_upper[s])
    print("------")

else:
    print("相関が高い組み合わせはありません")
import nltk
import numpy as np
import re
import copy


from scipy import stats
from scipy.stats import spearmanr




#記述的レベル
kizyututeki = [352.  635.   568.   705.   650.   702.   686.   392.   411.   378.
   345.   507.   546.   503.   507.   502.   576.   405.   584.   579.
   352.   526.   460.   517.   510.   499.   364.   628.   527.   536.
   535.   566. 15527. 38403. 12099. 26721. 22053. 26281. 25377. 32085.
 28842. 38225. 39433. 13438. 30291. 38877. 11309. 19125. 25240. 18317.
 23100. 22356. 14903. 23251. 28456. 38676.  2163. 25952. 30630. 25645.
 17593. 25060. 20917. 28842.]

#テキストの使いやすさレベル
tukaiyasusa = [ 1.297  0.875 -0.047  0.973  0.41  -0.192  1.222  0.233 -0.175  0.519
  0.561 -0.436 -0.104  0.421  0.545  0.172 -0.569 -1.153  2.113  0.274
  1.883 -0.008  1.024  0.301  0.133  0.168  0.567 -0.114  0.222  1.516
  0.268  0.116 -0.594 -0.491 -0.708  0.03  -1.043  0.445 -0.896 -0.218
  0.067 -0.056  0.175  0.471 -1.423 -0.042  0.404 -0.076 -1.515 -1.328
 -1.347 -0.646 -1.428 -0.165 -1.177 -0.48  -0.975 -1.392 -0.921  0.736
 -1.65   0.175 -1.141  0.072]

#参照の結束性レベル
sansyou = [0.154 0.102 0.075 0.094 0.098 0.056 0.065 0.121 0.056 0.088 0.162 0.109
 0.126 0.066 0.106 0.087 0.08  0.044 0.081 0.035 0.087 0.109 0.058 0.071
 0.125 0.099 0.048 0.087 0.168 0.09  0.129 0.13  0.118 0.106 0.118 0.083
 0.036 0.115 0.06  0.079 0.084 0.081 0.067 0.108 0.053 0.07  0.122 0.048
 0.049 0.035 0.029 0.049 0.062 0.102 0.057 0.07  0.035 0.052 0.102 0.07
 0.024 0.055 0.074 0.084]

#LSAレベル
lsa = [0.122 0.137 0.111 0.099 0.172 0.08  0.127 0.153 0.11  0.13  0.191 0.121
 0.118 0.16  0.293 0.154 0.147 0.096 0.123 0.107 0.124 0.188 0.158 0.058
 0.144 0.155 0.065 0.172 0.212 0.182 0.195 0.191 0.103 0.087 0.085 0.08
 0.079 0.06  0.075 0.039 0.079 0.039 0.103 0.05  0.081 0.049 0.058 0.053
 0.083 0.091 0.065 0.062 0.085 0.078 0.065 0.092 0.074 0.09  0.15  0.045
 0.052 0.08  0.102 0.079]

#連続語レベル
renzokugo = [ 5.682 20.472 29.93  19.858 23.077 17.094 39.359 15.306 12.165 10.582
  8.696  9.862 10.989 17.893 29.586 37.849  8.681 12.346 20.548 25.907
 34.091  7.605 15.217 11.605 33.333 18.036 10.989  6.369 20.873  5.597
 33.645 10.601 21.833 27.784 18.349 18.3   27.525 20.243 28.017 21.879
 21.323 22.054 24.244 30.436 26.047 22.044 25.113 18.248 21.91  21.51
 23.203 28.315 28.182 23.01  25.689 23.658 21.267 26.395 14.789 21.018
 24.214 20.431 27.203 21.323]

#状況モデルレベル
zyoukyoumoderu = [36.932 42.52  56.338 21.277 33.846 45.584 26.239 63.776 51.095 50.265
 37.681 84.813 51.282 31.809 57.199 37.849 38.194 61.728 35.959 27.634
 68.182 96.958 47.826 56.093 54.902 50.1   52.198 22.293 62.619 48.507
 33.645 53.004 31.687 20.389 38.185 16.616 21.72  34.245 50.006 33.287
 24.478 28.044 19.07  26.343 17.794 26.931 23.344 38.118 21.989 32.975
 45.411 26.257 37.308 29.289 21.507 22.934 18.031 32.059 13.581 24.332
 23.475 16.52  16.781 24.478]

#構文の複雑さレベル
koubunnohukuzatusa = [0.82  0.907 0.917 0.899 0.89  0.928 0.892 0.876 0.938 0.914 0.833 0.886
 0.85  0.902 0.837 0.891 0.927 0.949 0.858 0.912 0.898 0.901 0.915 0.906
 0.865 0.88  0.957 0.922 0.832 0.887 0.905 0.89  0.894 0.874 0.888 0.908
 0.97  0.883 0.948 0.906 0.901 0.908 0.874 0.858 0.945 0.913 0.876 0.95
 0.951 0.959 0.971 0.951 0.938 0.901 0.944 0.906 0.945 0.949 0.867 0.904
 0.973 0.899 0.933 0.901]

#構文パターン密度レベル
koubun = [150.568 203.15  250.    200.    204.615 266.382 237.609 224.49  228.71
 253.968 333.333 264.3   278.388 250.497 205.128 243.028 208.333 237.037
 253.425 217.617 298.295 243.346 269.565 237.911 213.726 224.449 228.022
 251.592 288.425 289.179 267.29  226.148 248.342 243.809 249.855 236.518
 224.278 242.647 281.357 233.879 219.021 239.529 151.979 191.546 197.98
 206.96  217.88  220.758 215.729 209.15  228.268 209.519 209.287 253.796
 223.327 235.288 192.325 212.431 165.426 237.434 209.174 166.76  212.793
 219.021]

#単語情報レベル
tangozyouhou = [594.2   588.709 595.149 586.237 585.869 587.877 584.697 602.664 590.348
 590.71  597.333 596.815 591.989 590.48  575.617 582.919 576.544 595.507
 583.804 583.108 595.855 596.07  594.694 580.055 581.149 584.798 596.312
 584.199 597.414 595.828 589.126 590.646 575.664 563.56  574.078 574.851
 567.568 579.8   576.229 574.359 572.911 578.083 554.564 566.522 561.752
 569.114 573.495 575.259 568.107 562.233 568.595 567.338 563.754 574.391
 570.349 566.346 560.707 564.613 552.126 579.217 561.816 566.197 570.606
 572.911]

kizyututeki.split()
tukaiyasusa.split()
sansyou.split()
lsa.split()
renzokugo.split()
zyoukyoumoderu.split()
koubunnohukuzatusa.split()
koubun.split()
tangozyouhou.split()


level_soukan_dic={"３つの接続詞のzスコア": 0.6599890232784251, "隣接する文との内容語の重複の標準偏差": 0.5083065285904638, 
            "隣接する文のコサイン類似度": -0.18760245477022275,"時間的接続詞の発生率": 0.342612618128205,
            "時制の繰り返しの平均": 0.6285245987567255, "前置詞句の発生スコア": 0.3667653286504391,
            "一人称単数代名詞の発生率": 0.23318079080290005}

level_number_dic={0: "記述的", 1: "テキストの使いやすさ", 2: "参照の結束性",
                3: "lsa", 4: "接続詞レベル", 5: "状況モデル", 6: "構文の複雑さレベル", 7:"構文のパターンレベル", 8:"単語情報レベル"}


level_sihyou_dic={0: kizyututeki,1: tukaiyasusa, 2: sansyou, 3: lsa, 4: renzokugo,
            5: zyoukyoumoderu, 6: koubunnohukuzatusa 7: koubun, 8: tangozyouhou}



kazu=0
soukan=0
keisan_kaisuu=0
soukankekka={}
soukankekka_upper={}#相関が高かったものだけ入れるディクショナリ
while kazu < 8:

    keisan_kaisuu=kazu+1

    while keisan_kaisuu < 9:

        #相関計算
        x_np = np.array(level_sihyou_dic[kazu])
        y_np = np.array(level_sihyou_dic[keisan_kaisuu])


        #シャピロウィルク検定で正規性の確認
        #w値とp_value
        shap_w_x, shap_p_value_x = stats.shapiro(level_sihyou_dic[kazu])
        shap_w_y, shap_p_value_y = stats.shapiro(level_sihyou_dic[keisan_kaisuu])

        #p_valueが0.05以上なら，帰無仮説が採択→正規性がある
        if shap_p_value_x >= 0.05 and shap_p_value_y >= 0.05:
            #print("正規性があるといえる")

            #ピアソンの相関係数をとる
            # 相関行列を計算
            coef = np.corrcoef(x_np, y_np)
            soukan = coef[0][1]


        #p_valueが0.05以下なら，帰無仮説が棄却→正規性がない
        else:
            #print("正規性があるといえない")
   
            #スピアマンの順位相関係数
            correlation, pvalue = spearmanr(x_np, y_np)
            soukan = correlation

        
        soukankekka[level_number_dic[kazu]+ " - " + level_number_dic[keisan_kaisuu]] = soukan # パラメータ，相関の結果
        #相関が高かったら，ディクショナリに入れる
        if abs(soukan) >= 0.7:
            soukankekka_upper[level_number_dic[kazu]+ " - " + level_number_dic[keisan_kaisuu]] = soukan # パラメータ，相関の結果
        

        keisan_kaisuu+=1
        
    
    kazu+=1

    



#パラメータ番号と相関係数の結果を，相関係数の大きい順で表示
for s in soukankekka:
    print(s)
    print(soukankekka[s])
            
print("------")


#相関が0.7以上のものがあるか
if soukankekka_upper:
    print("相関係数が0.7以上あったもの")
    for s in soukankekka_upper:
        print(s)
        print(soukankekka_upper[s])
    print("------")

else:
    print("相関が高い組み合わせはありません")
#記述的レベル #テキストの使いやすさレベル #参照の結束性レベル #LSAレベル #連続語レベル #状況モデルレベル #構文の複雑さレベル #構文パターン密度レベル #単語情報レベル #相関が高かったものだけ入れるディクショナリ #相関計算 #シャピロウィルク検定で正規性の確認 #w値とp_value #p_valueが0.05以上なら，帰無仮説が採択→正規性がある #print("正規性があるといえる") #ピアソンの相関係数をとる # 相関行列を計算 #p_valueが0.05以下なら，帰無仮説が棄却→正規性がない #print("正規性があるといえない") #スピアマンの順位相関係数 # パラメータ，相関の結果 #相関が高かったら，ディクショナリに入れる # パラメータ，相関の結果 #パラメータ番号と相関係数の結果を，相関係数の大きい順で表示 #相関が0.7以上のものがあるか