1

ここと以前のフォーラム ページの資料を使用して、テキスト全体の連続する文間の意味的類似性を自動的に計算するプログラムのコードを記述しました。ここにあります;

最初の部分のコードは最初のリンクからコピーして貼り付けたもので、その下に 245 行の後に挿入したものがあります。245 行目以降の余分な部分をすべて削除しました。

with open ("File_Name", "r") as sentence_file:
    while x and y:
        x = sentence_file.readline()
        y = sentence_file.readline()
        similarity(x, y, true)           
#boolean set to false or true 
        x = y
        y = sentence_file.readline() 

私のテキストファイルは次のようにフォーマットされています。

赤いアルコール飲料。新鮮なオレンジジュース。英語の辞書。黄色の壁紙。

最後に、次のように、類似度が横にある連続した文のすべてのペアを表示したいと思います。

["Red alcoholic drink.", "Fresh orange juice.", 0.611],

["Fresh orange juice.", "An English dictionary.", 0.0]

["An English dictionary.", "The Yellow Wallpaper.",  0.5]

if norm(vec_1) > 0 and if norm(vec_2) > 0:
    return np.dot(vec_1, vec_2.T) / (np.linalg.norm(vec_1)* np.linalg.norm(vec_2))
 elif norm(vec_1) < 0 and if norm(vec_2) < 0:
    ???Move On???
4

1 に答える 1

0

これはうまくいくはずです。コメントには注意すべき点がいくつかあります。基本的に、ファイル内の行をループして、結果を保存することができます。一度に 2 行を処理する 1 つの方法は、「無限ループ」を設定し、読み取った最後の行をチェックして、最後に到達したかどうかを確認することです (はファイルの最後にreadline()戻りNoneます)。

# You'll probably need the file extention (.txt or whatever) in open as well
with open ("File_Name.txt", "r") as sentence_file:
    # Initialize a list to hold the results
    results = []

    # Loop until we hit the end of the file
    while True:
        # Read two lines
        x = sentence_file.readline()
        y = sentence_file.readline()

        # Check if we've reached the end of the file, if so, we're done
        if not y:
            # Break out of the infinite loop
            break
        else:
            # The .rstrip('\n') removes the newline character from each line
            x = x.rstrip('\n')
            y = y.rstrip('\n')

            try: 
                # Calculate your similarity value
                similarity_value = similarity(x, y, True)

                # Add the two lines and similarity value to the results list
                results.append([x, y, similarity_value])
            except:
                print("Error when parsing lines:\n{}\n{}\n".format(x, y))

# Loop through the pairs in the results list and print them
for pair in results:
    print(pair)

編集: から取得している問題に関して、similarity()これらのエラーの原因となっている行のペアを単純に無視したい場合 (ソースを詳細に調べずに、何が起こっているのか本当にわかりません)、try, catch前後にa を追加できますに電話しsimilarity()ます。

于 2017-01-11T16:18:40.500 に答える