2011-12-09 22 views
1

对于家庭作业,我必须编写一个程序,从网站上剪下HTML,然后以某种方式在网站中查找短语。当我说短语时,我的意思是某种组织文本的任意方式,以便将彼此靠近的单词放在同一组中。我知道这听起来确实不清楚,但是作业说明我们如何做到这一点取决于我们如何找到“短语”的解释。JSOUP查找字词组

目前,我有如下所示的代码:

Document doc = Jsoup.connect("http://oracle.com/").get(); 
String html = doc.body().toString(); 

System.out.println(html); 

哪位能给我的所有的一些网页出现在解析出所有的HTML不同的话一个体面的打印输出。

我的主要问题是我想不出一种方法来解析HTML,以便我可以以某种方式将这些任意组合在一起(并且我不知道我可以使用什么样的标准来任意形成这些“组” “的话)。

我知道这个问题听起来很糟糕,但我不知道我怎么能说出来,而且我真的不知道我能做什么。我得到的任务是非常不清楚的,当被要求澄清时,我的教授只是让我自己解释。我想知道是否有人对如何解析html有任何想法,以便可以过滤出与我目前输出相似的单词(可能在类似的html标签或其他内容中),除了可能在每个“短语“就像换行符或我可以解析的东西。

感谢您的任何想法或建议。

回答

1

你在找什么是一个概念叫做stemming。维基百科

一种英语词干,例如,应确定字符串“猫” (以及可能的“猫爪”,“斤”等),基于根“猫”,并 “词干“,”干扰“,”干扰“基于”干“。甲词干 算法降低了词语“钓鱼”,“钓鱼”,“鱼”,和“渔民” 到根字,“鱼”。

您的提供了一个简单的蛮力实现。同时检查干扰算法的实施从LuceneOpenNLP

0

由于您的问题很不清楚,我的答案并不完美无论如何。事实上,这更多的建议,而不是答案,因为评论可能不那么大。

这是基于你的下面的语句定义一个想法 - When I say phrases I mean some sort of arbitrary way of organizing text so that words that are in close proximity to each other are put in the same group

我认为你需要做的是“独立”了不同的部分从HTML尽可能多的文本可能从HTML 。不可能有百分之百的方法来实现这一点,因为html本身可能非常复杂,以这种方式解析它可能会变得极其困难,如果不可能的话。

这里是来到我的心中只有一个建议 - 找到HTML文本的连续片有没有标记在其中。这可以通过简单的正则表达式很容易做到,如果你正在使用jsoup,你可以做这样的事情 -

String html = doc.body().toString(); 
Matcher m = Pattern.compile("([^<>]+)").matcher(html); 
while(m.find()) { 
    String text = f.group(1); 
} 

但这可能不是单独总是为一些断断续续的HTML工作装饰的字体变化,甚至粗体和斜体标记可以'打破'这些短语。所以你可能想要建立某种弹性来忽略这样的事情。

或者,也许你可以找到另一个文本的'标签距离'。这就是计数出现在文本片段之间的html标签的数量,如果它们只是一个或者可能是2-3个标签,则可能会考虑片段。

最后,你可以自由地投入一些自己的创造力来发展这种方法。 我想再次提一下,这只是一个建议,可以帮助您进行构建。 一切顺利。