如何计算 HTML 源中的字数(文本)
我有一些 html 文档,我需要返回文档中的字数。该计数应该只包括实际文本(因此没有 html 标签,例如 html、br 等)。
有什么想法如何做到这一点?当然,我更愿意重用一些代码。
谢谢,
阿萨夫
I have some html documents for which I need to return the number of words in the document. This count should only include actual text (so no html tags e.g. html, br, etc).
Any ideas how to do this? Naturally, I would prefer to re-use some code.
Thanks,
Assaf
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
去掉HTML标签,获取文本内容,复用 Jsoup
逐行读取文件,持有一个
MapwordToCountMap
并对Map
逐行读取
Strip out the HTML tags , get the text content , reuse Jsoup
Read file line by line , hold a
Map<String, Integer> wordToCountMap
and read through and operate on theMap
使用jsoup解决方案
Solution with jsoup
我会在 Jigar 的答案中添加一个额外的步骤:
Tokenise 结果文本 。这取决于你对“词”的定义。它不太可能像按空白分割那么简单。并且您需要处理标点符号等。因此请查看各种可用的 Tokeniser,例如来自 Lucene 或斯坦福 NLP 项目的。以下是您会遇到的一些简单示例:
“今天我要去纽约!”
- “我”是一两个词吗? “纽约”怎么样?“我们在分析中应用了两个元过滤器”
- “元过滤器”是一个单词还是两个单词?格式错误的文本怎么办,例如句子末尾缺少空格:
标记化很棘手...
I would add an extra step to Jigar's answer:
Tokenise the resulting text. This depends on your definition of a "word". It is unlikely to be as simple as splitting on white-space. And you'll need to deal with punctuation etc. So take a look at the various Tokeniser's available e.g from the Lucene or Stanford NLP projects. Here are some simple examples you will encounter:
"Today I'm going to New York!"
- Is "I'm" one word or two? What about "New York"?"We applied two meta-filters in the analysis"
- Is "meta-filter" one word or two?And what about badly formatted text, e.g missing of a space at the end of a sentence:
Tokenising is tricky...