我在使用Mallet 2.0.7在Java中用於挖掘鳴叫。 根據文檔,對於主題建模,我必須使用CsvIterator讀取數據集。創建自定義模式爲我的數據集在槌
Reader fileReader = new InputStreamReader(new FileInputStream(new File(args[0])), "UTF-8");
instances.addThruPipe(new CsvIterator (fileReader, Pattern.compile("^(\\S*)[\\s,]*(\\S*)[\\s,]*(.*)$"),
3, 2, 1)); // data, label, name fields
我的數據集是這樣的:行,X,位置,用戶名,hashtaghs,文本,轉推,日期,收藏夾,numberOfComment
的標籤我加x列。在第一次,我想在列文本(6)中運行算法,後來又添加了另一列。我編寫了這種模式,但它不能正確工作,它直到最後才獲得第6列的數據。如何更改模式的正則表達式?
Reader fileReader = new InputStreamReader(new FileInputStream(new File(filePath)), "UTF-8");
instances.addThruPipe(new CsvIterator(fileReader,
Pattern.compile("^(\\S*)[\\s,]*(\\S*)[\\s,]*(\\S*)[\\s,]*(\\S*)[\\s,]*(\\S*)[\\s,]*(.*)$"),
6, 2, 1)); // data, label, name fields
感謝您的回答!我想函數編譯(數據組)的參數3是我想要在其中檢測主題的文本的索引,爲此,我通過了6。你傳遞了2這意味着在我的數據集中,這意味着2列(文本和轉推)? – NASRIN
在我的預處理步驟中,我刪除了逗號,停用詞和派生推文。因爲這個原因,我用逗號作爲分隔符,我根據你的指導改變了模式。 「^(\\ d +)[,] * [^,] * [,] * [^,] * [,] * [^,] * [,] *([^,] *)[,] * [ ^,] * [,] * [^,] * [,] * [^,] * [,] * [^,] * $「但是我仍然懷疑我的程序,你有沒有槌子的例子,除了郵件木槌網站? – NASRIN