为什么 extractHTMLStrip() from tm.plugin.webmining 会截断 61 个字符以下的字符串?

Why does extractHTMLStrip() from tm.plugin.webmining truncate strings under 61 characters?

我有一组消息,其中一些是纯文本,另一些是用 HTML 标记标记的。带有 HTML 标签的邮件似乎不包含标签 <html><body>;到目前为止,我只看过 <p></p><br>。我正在尝试使用 R 包 tm.plugin.webmining 中的 extractHTMLParse() 从包含 HTML 的字符串中删除 HTML 标记,但是对于短于 61 个字符的字符串,该函数失败(或者 68 如果字符串包含 html 标签)。

例如,

extractHTMLStrip("This message has 61 characters, sixty-one characters exactly.")
[1] "This message has 61 characters, sixty-one characters exactly."

但是如果我在最后去掉句点,则不会返回任何内容,

extractHTMLStrip("This message has 61 characters, sixty-one characters exactly")
character(0) 

如果我在带有 HTML 标签的字符串上尝试,最小长度会跳到 68:

extractHTMLStrip("<p>This string has 68 characters, sixty-eight characters exactly</p>")
[1] "This string has 68 characters, sixty-eight characters exactly"

如果我删除最后一个字符,调用将失败:

extractHTMLStrip("<p>This string has 68 characters, sixty-eight characters exactl</p>")
character(0)

我用谷歌搜索 "extracthtmlstrip minimum length" 并在 tm.plugin.webmining 手册中搜索 "length" 这个词,但这些都没有提供解决方案。 Whosebug 似乎只有两个(现在是三个)问题提到 tm.plugin.webmining,但他们没有提到这个问题。

谁能解释这种行为以及我如何从任意长度的字符串中删除 HTML 标签?理想情况下,我想使用理解 HTML 而不仅仅是正则表达式的工具来做到这一点。

OS X 10.10.3、R 版本 3.1.2 和 tm.plugin.webmining 版本 1.3。

看起来像是代码中的错误。

函数从 XML 调用 htmlTreeParse,结果是:

library(XML)
tree <- htmlTreeParse("whatever you entered", asText = TRUE, useInternalNodes = TRUE, encoding = "latin1")

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>whatever you entered</p></body></html>

<!DOCTYPE....> 是泛型 header,由函数放入。

以下步骤拉出最长的child,如果你有一个小的输入,它恰好是<!DOCTYPE字符串(它有106个字符长,这是一个68个字符长输入的长度转到添加的标签),然后通过调用 xmlValue 将其删除,从而产生 character(0) 输出。

我已经提交了 bug on their github