我正在寻找可以解决我的以下问题的算法,提示或任何源代码.
我有一个文件夹,它包含许多文本文件.我读了它们并将所有文本存储在STRING中.现在我想计算,如果任何单词出现在其他文件中或没有.(我知道不清楚让我举个例子)
例如我有两个文件:Doc A =>"brown fox jump"Doc B =>"dog not jump"Doc C =>"狐狸跳狗"
让我们说我的程序读了第一个文件,现在第一个单词是"棕色",现在我的程序将检查这个单词是否也出现在任何其他文件中?所以答案是0.现在它将再次检查第二个单词"fox",它将给出输出,它出现在(Doc C)中......现在它将读取Doc B并且它将检查如果狗出现在其他文件中?答案是(Doc C)等......
任何建议或伪代码?
提示:它也称为逆文档频率(Idf).我知道什么是idf.
我正在使用TF/IDF来计算相似度.例如,如果我有以下两个doc.
Doc A => cat dog
Doc B => dog sparrow
Run Code Online (Sandbox Code Playgroud)
这是正常的,它的相似性是50%,但是当我计算它的TF/IDF时.如下
Doc A的Tf值
dog tf = 0.5
cat tf = 0.5
Run Code Online (Sandbox Code Playgroud)
Doc B的Tf值
dog tf = 0.5
sparrow tf = 0.5
Run Code Online (Sandbox Code Playgroud)
Doc A的IDF值
dog idf = -0.4055
cat idf = 0
Run Code Online (Sandbox Code Playgroud)
Doc B的IDF值
dog idf = -0.4055 ( without +1 formula 0.6931)
sparrow idf = 0
Run Code Online (Sandbox Code Playgroud)
Doc A的TF/IDF值
0.5x-0.4055 + 0.5x0 = -0.20275
Run Code Online (Sandbox Code Playgroud)
Doc B的TF/IDF值
0.5x-0.4055 + 0.5x0 = -0.20275
Run Code Online (Sandbox Code Playgroud)
现在看起来有-0.20275的相似性.是吗?或者我错过了什么?或者也是下一步呢?请告诉我,我也可以计算一下.
我使用了维基百科提到的tf/idf公式
我有二维矩阵.我的矩阵很稀疏.我正面临性能问题.请问任何正文可以回答我在java中可以使用的api或类来处理稀疏矩阵以提高我的程序性能.
比如我想要的
it take 100x100 matrix
handle sparse stuff
do the multiplication
return me my matrix same as 100x100 with 0 ( mean sparse matrix )
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个可以计算tf-idf计算的简单java类.我想对2个文件进行相似性测试.我找到了很多使用tf-idf类的BIG API.我不想使用大的jar文件,只是为了做我的简单测试.请帮忙 !或者至少如果有人可以告诉我如何找到TF?和以色列国防军?我会计算结果:)或者如果你能告诉我一些很好的java教程.请不要告诉我看谷歌,我已经做了3天,找不到任何东西:(也请不要把我推荐给Lucene :(
我面临一个非常基本的问题.有些时候小事情可能需要你一整天:(但感谢stackoverflow memebers总是试图帮助:)
我试图匹配2个字符串,如果匹配它应该返回TRUE
现在我正在使用它
if (var1.indexOf(var2) >= 0) {
return true;
}
Run Code Online (Sandbox Code Playgroud)
但是如果var1的值为"maintain"且var2的值为"inta"或"ain"等,它仍会返回true :(.在java中是否有任何方法可以进行全文匹配而不是部分?例如
if("mango"=="mango"){
return true;
}
Run Code Online (Sandbox Code Playgroud)
谢谢 !!!
如何从字符串中删除电子邮件地址?以及所有其他数字和特殊字符?
示例字符串可以是
"Hello world my # is 123 mail me @ test@test.com"
Run Code Online (Sandbox Code Playgroud)
输出字符串应该是
"Hello world my is mail me"
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了这个,发现我可以使用以下正则表达式
"[^A-Za-z0-9\\.\\@_\\-~#]+"
Run Code Online (Sandbox Code Playgroud)
但该示例更多的是检查有效的电子邮件 ID,而不是将其删除。我是 Java 新手!
对不起,我的问题听起来很愚蠢 但是有些时候小事会给你带来很大的麻烦,并花费你的全部时间来解决它.但是感谢stackoverflow,我可以获得GURU建议.:)
所以这是我的问题.我在一个字符串中搜索一个单词,并在该单词出现的地方加上0.例如:搜索词是DOG,我有字符串"永远不会让狗咬你"所以字符串将是000100.现在,当我尝试将此字符串转换为INT时,它会产生结果100 :(这很糟糕.我也不能使用int数组我只能使用字符串,因为我正在整理它,也在程序中使用其他地方.
现在我确定你想知道我为什么要把它转换成INT.所以我的回答.我使用每个字符串中的3个单词来制作这种二进制字符串.所以让我说我使用了三个搜索查询,如(狗,狗,永远)所以所有三个字符串将是000100 000100 010000然后我想要SUM它们应该产生这样的结果"010200"而它产生结果"10200"这是错误的.:(
提前致谢
我正在使用java中的矩阵.( 另一个故事 :) )
我想读取CSV文件并将其存储在变量中.我将操纵值然后再将其存储在CSV文件中.我使用STRING作为数据类型.但是如果CSV文件有500列.它会杀死我的程序速度:(.我认为这不是很好的数据类型.我可以使用哪种数据类型来临时存储LONG TEXT?
如果我的问题不明确,请提出问题.我会解释.谢谢
PS:我正在读一行并将其存储在这样的变量中
String str;
str += read line by line from CSV;
Run Code Online (Sandbox Code Playgroud)
这是循环
String reduceM="";
for(int kk=0;kk<W2.getRowDimension();kk++){
for(int jj=0;jj<W2.getColumnDimension();jj++){
reduceM += Double.toString(reduceMatrix[kk][jj]);
}
System.out.println("\r\n");
}
Run Code Online (Sandbox Code Playgroud) 我有hashmap,其键如"folder/1.txt,folder/2.txt,folder/3.txt",值包含这些文本文件数据.
现在我被困了.我想对此列表进行排序.但它不允许我这样做:(这是我的hashmap数据类型:
HashMap<String, ArrayList<String>>
Run Code Online (Sandbox Code Playgroud)
以下函数工作正常但是arraylist不适用于hashmap.
Collections.sort(values, Collections.reverseOrder());
Run Code Online (Sandbox Code Playgroud)
我也尝试了MapTree,但它也没有用,或者可能是我无法使它工作.我使用以下步骤使用maptree对代码进行排序
HashMap testMap = new HashMap();
Map sortedMap = new TreeMap(testMap);
Run Code Online (Sandbox Code Playgroud)
还有其他办法吗?
我有一个疑问,因为我的密钥是(文件夹/ 1.txt,文件夹/ 2.txt)可能是这个原因?