2016-06-21 18 views
0

DISCO(使用CO出現來提取DI分佈相關的詞)是一種Java應用程序,它允許檢索任意詞和短語之間的語義相似性。使用Ruby訪問Java應用程序DISCO(Kolb 2008)

我正在使用DISCO獲取2400+個字對的相似值。

目前,我可以通過遵循命令行指令(請參閱鏈接)檢索單個字對的相似值。

我需要編寫代碼,以便我可以輸入一個單詞對列表並接收相似性值作爲輸出。

我已經嘗試使用下面的代碼。這是行不通的。輸出是僅列表中第一個字對的相似度值。 (請注意,我個人沒有使用Java或Ruby進行編碼的經驗,這是由一位朋友在早晨喝咖啡時寫得很快)。

# script for Bonnie's word pair calculating thing 
file_name_in = 'word_pairs.txt'  # name of txt file with pairs 

command_p1 = "java -jar disco-2.0.jar enwiki-20130403-sim-lemma-mwl-lc -s" 

command_p2 = "COSINE" 

File.open(file_name_in, 'r') do |file_in| 
    file_in.each_line do |line| 
    word1, word2 = line.split 
    system("#{command_p1} #{word1} #{word2} #{command_p2}") 
    end 
end 

一個樣品的單詞列表如下:

愛恨

預約醫生

響應快

青蛙綠色

小狗可愛

教堂宗教

舟白

工具銀

手鍊含金量

善良假

任何幫助是極大的讚賞。

回答

0

我認爲問題在於你的word2變量在它們中有換行符。

當你從一個文件中取一條線並且split它時,如果在最後有一個換行符,那麼它將被包括在結果中。

要解決此問題,請使用line.chomp.split,因爲chomp將從字符串中刪除換行符。

+0

我收到一個錯誤。 'words_to_value.rb:10:在'塊在

':未定義的方法'格格' 爲#<文件:word_pairs.txt(閉合)>(NoMethodError) \t從words_to_value.rb:9:在'開放' 從 \t words_to_value.rb:9:在'
'' –

+0

對不起,這是我的答案中的拼寫錯誤,我的意思是'line.chomp.split' –