ri-riri / sotu

0 stars 0 forks source link

しゅつげん率 #6

Open ri-riri opened 4 years ago

branch-git commented 4 years ago

reviewごとにmydict(評価辞書タプル:0の形式で作ったもの)のカウントを0にリセットするようにしておきます.

count_results = 
{
    EOS Kiss M_body_1_1:    #EOS Kiss M_body_1_1.txtのカウント結果
    {
        ('キヤノンらしい', 'キャノンらしい', 'キャノンらしく', 'キヤノンらしさ', 'キャノンっぽい', 'キヤノンぽい', 'Canonらしい', 'Canonらしく', 'canonらしさ'): 0,

        ('キヤノンらしくない',): 1, 

        ('ニコンらしい', 'ニコンらしく', 'ニコンらしさ', 'ニコンっぽい', 'ニコン機らしい', 'Nikonらしい', 'NIKONらしい', 'Nikonらしい', 'Nikonらしく'): 0, 

        ('フジらしい', 'FUJIFILMらしさ'): 0, 

        ('ソニーらしい', 'SONYらしい'): 0, 

        ('パナソニックらしい',): 0, 
        ...
    }

    EOS Kiss M_body_1_2:
    {
        ('キヤノンらしい', 'キャノンらしい', 'キャノンらしく', 'キヤノンらしさ', 'キャノンっぽい', 'キヤノンぽい', 'Canonらしい', 'Canonらしく', 'canonらしさ'): 0,

        ('キヤノンらしくない',): 3, 

        ('ニコンらしい', 'ニコンらしく', 'ニコンらしさ', 'ニコンっぽい', 'ニコン機らしい', 'Nikonらしい', 'NIKONらしい', 'Nikonらしい', 'Nikonらしく'): 2, 

        ('フジらしい', 'FUJIFILMらしさ'): 0, 

        ('ソニーらしい', 'SONYらしい'): 9, 

        ('パナソニックらしい',): 0, 
        ...
    }

    ...     #全レビューでカウントした結果が格納される
}

別途用意しておいた選択製品リストselected_productsに対して,


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~ここに選択製品リストをselected_productsに格納する何らかの処理~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

sum_result = {}                 #製品ごとに結果を格納する.初期化.

for selected_product in selected_products:                  #選択製品リストから一つ一つを取り出す

    for tuple_list in mydict:       #選択製品のカウント結果のそれぞれの鍵を取り出す

        if not tuple_list in sum_result:
            sum_result[tuple_list] = 0
        sum_result[tuple_list] += count_result[selected_product][tuple_list]
        #count_result[selected_product]で該当レビューのカウント結果を抜き出せる
        #Pythonのdict型では,未知鍵で呼び出した場合は新規に追加される仕様->初期値0で固定したいのでif not部分を追加

とでもすればレビューごとにカウント結果をとりまとめられます.mydictとcount_result[selected_product]の中身の値(カウント結果)は違うけど,鍵はすべて共通なのがポイントかな.

selected_productsの中身は ["EOS R5_body" , "Nikon D5500_body" , "Sony α5000"]みたいなんがくる想定. files = glob.glob("*_*_*.txt)の初めの部分かな~

9/30 8:42追記 未知鍵追加の場合の初期値を0で固定したいのでif not文を追加

branch-git commented 4 years ago
for series in selected_products:
    files = glob.glob("./review/*/*/{}_*_*.txt".format(series)) #*に入るのは何でもいい
    for file in files:
        f = open(file,"r")
        review = f.read()
#        print(review)

        count_result = {}
        for selected_product in selected_products: #選択製品リストから一つ一つを取り出す
            sum_result = {} #製品ごとに結果を格納する.初期化.
            count_result[selected_product] = sum_result

            skip_flag = False #Falseは0と同じ
            for tuple_list in mydict: #選択製品のカウント結果のそれぞれの鍵を取り出す
                if not tuple_list in sum_result:
                    sum_result[tuple_list] = 0
                sum_result[tuple_list] += count_result[selected_product][tuple_list]

                #mydictの値の部分をカウントしていく

                for item in tuple_list: #itemはキヤノンらしいなどの単語1つ1つ
                    if review.count(item) > 0: #数えた結果が0より大きかったら
                        skip_flag = True #Trueは1と同じ
                        continue #次のitemに行く

                if skip_flag == True: #skip_flagがTrueなら処理実行
                    skip_flag = False #Trueを踏んだらFalseに戻す
                    mydict[tuple_list] += 1 #mydictの値のカウントを1増やす
                    continue #次のtuple_listに行く
                f.close()
print(count_result)

            #count_result[selected_product]で該当レビューのカウント結果を抜き出せる
            #Pythonのdict型では,未知鍵で呼び出した場合は新規に追加される仕様
print(count_result)
->
{'EOS R5_body': 
    {
        ('キヤノンらしい', 'キャノンらしい', 'キャノンらしく', 'キヤノンらしさ', 'キャノンっぽい', 'キヤノンぽい', 'Canonらしい', 
            'Canonらしく', 'canonらしさ'): 0, ('キヤノンらしくない',): 0, 
    ('ニコンらしい', 'ニコンらしく', 'ニコンらしさ', 'ニコンっぽい', 'ニコン機らしい', 'Nikonらしい', 'NIKONらしい',                         
            'Nikonらしい', 'Nikonらしく'): 0, 
    ('フジらしい', 'FUJIFILMらしさ'): 0, ('ソニーらしい', 'SONYらしい'): 0,
    ....
    }
....
}

0になる
branch-git commented 4 years ago

issue #7 参照