据我了解,IDF用于计算有多少文件具有该术语(仅仅是这个想法).您可以在训练集中计算IDF(以及TF),因为您事先拥有所有文档.但是,如果我事先没有测试集并且我以顺序的方式获得测试文档(比如来自网络爬虫),那么当我们在测试时如何计算文档中的单词的IDF呢? ?
我正在尝试使用Weka java API进行文档分类.
这是我的数据文件的目录结构.
+- text_example
|
+- class1
| |
| 3 html files
|
+- class2
| |
| 1 html file
|
+- class3
|
3 html files
Run Code Online (Sandbox Code Playgroud)
我有'textDirectoryLoader'创建的'arff'文件.然后我StringToWordVector在创建的arff文件上使用过滤器filter.setOutputWordCounts(true).
下面是应用滤镜后的输出示例.我需要澄清一些事情.
@attribute </form> numeric
@attribute </h1> numeric
.
.
@attribute earth numeric
@attribute easy numeric
Run Code Online (Sandbox Code Playgroud)
这个庞大的列表应该是初始html文件内容的标记化.对?
然后我有,
@data
{1 2,3 2,4 1,11 1,12 7,..............}
{10 4,34 1,37 5,.......}
{2 1,5 6,6 16,...}
{0 class2,34 11,40 15,.....,4900 3,...
{0 class3,1 2,37 3,40 5....
{0 class3,1 …Run Code Online (Sandbox Code Playgroud) 我知道当我们传递对象时,我们将其引用作为值传递.但是你得到的这个值是hashcode()正确使用方法(根据我的测试,它是相同的)?既然hashcode()不是内存地址而且不能保证始终获得唯一值,那么在传递对象时是否会发生像碰撞这样的奇怪事情?
(假设hashcode()没有被覆盖,即它返回相同的值System.identityHashCode())
有三个人很喜欢这个问题,但我找不到一个相关的资源来讨论传递的价值是什么以及你如何得到它?
编辑:
这是我的测试.默认值toSting()使用hashCode()inside并将其转换为十六进制值.所以当我们传递对象时,这是传递的值吗?或者java做什么来跟踪所有对象(被传递),这样就不会有任何引用冲突?
Object o = new Object();
System.out.println(o);
System.out.println(o.toString()); //both prints same thing - java.lang.Object@10385c1
Run Code Online (Sandbox Code Playgroud) 这是一个酒店代理的示例程序,他从各种酒店获得合同,并允许客户搜索和预订与他有合同的酒店(从而获得一些利润)。这是我的表模式。
CONTRACT (contract_id, hotel_id, valid_from, valid_to)
ROOM (room_type, hotel_id, contract_id, price, max_adults_allowed, avail_rooms)
HOTEL (hotel_id, hotel_name, location)
Run Code Online (Sandbox Code Playgroud)
搜索时,界面类似hotels.com;即,例如,客户可以将其指定为“1 个房间有 2 个成人”和“1 个房间 2 个成人和 1 个房间 3 个成人”。
到目前为止,这是我的 sql 查询,
select h.name, h.location, r.type, r.price FROM HOTEL h, ROOM r, CONTRACT c
WHERE c.contract_id = r.contract_id and c.hotel_id = h.hotel_id --table joining
AND 'requested room lies within the contract valid period' --check in and check out dates comparison
AND 'h.location is the user specified location' --requested location …Run Code Online (Sandbox Code Playgroud) 我正在使用most_similar()下面的方法来获取与给定单词相似的所有单词:
word,score= model.most_similar('apple',topn=sizeofdict)
Run Code Online (Sandbox Code Playgroud)
AFAIK,它的作用是计算给定单词与字典中所有其他单词之间的余弦相似度。当我检查单词和分数时,我可以看到列表中有负分的单词。这是什么意思?它们是与给定单词具有相反含义的单词吗?
此外,如果它使用余弦相似度,它如何获得负值?两个文档的余弦相似度在 0-1 之间变化。
因此,我使用 split 命令将文件拆分为单独的行,并将它们保存到与我正在执行命令的当前目录不同的目录中。
split -l 1 -d -a 5 --additional-suffix=.txt file1.dat file toindex/
Run Code Online (Sandbox Code Playgroud)
所以我希望将输出文件写入其中toindex/,但这给了我一个错误提示:
split: extra operand ‘toindex/’. 如果我没有输出目录路径或没有前缀(“文件”),这很好用。
我如何让这个工作?我需要有前缀和附加后缀。
我已经阅读了词干损害精确度但提高了文本分类中的召回率.这是怎么发生的?当你阻止你增加查询和样本文件之间的匹配数对吗?
我不是在讨论String类或任何其他重写hashcode的类.假设我只是创建了一个Object类的新对象,那么hashcode()无论如何都会identityHashCode(Object x)返回true,返回该对象的内存地址?
首先,我在这里谈论默认的hashCode()方法而不是覆盖的东西.当我们创建一个新对象时,'new'运算符返回它创建的对象的内存地址; 在java中我们说它更普遍地返回引用.我想知道的是,这是否与hashCode()返回的值相同?
我相信他们是一样的.但话说回来,当我们有超过2 ^ 32个对象并且给定hashCode()返回一个整数(2 ^ 32个不同的数字)时,将会发生全部碰撞,当我们传递对象时,这将是一个真正的混乱.JVM如何处理?