【问题标题】:How do you fix sentence spacing on extracted plain text from HTML?如何修复从 HTML 中提取的纯文本的句子间距?
【发布时间】:2011-04-29 11:06:09
【问题描述】:

我正在从特定 URL 中提取文章以转换为句子,但文本正文具有消除某些句子之间空格的随机行为,导致:

Jane went to the store.She bought a dog. The dog was very friendly.It had no teeth.

我的一些文本是股票代码 (AZ.GAN) 等。所以我不能简单地在没有相邻空格的所有句点之间插入一个空格。

Jane bought several shares of (TY.JPN). She lost all her cash money."Arg!" She cried.

上面的例子会破坏股票代码变量。

想知道是否有人知道造成这种情况的原因。我尝试了几种 HTML 和 DOM。我使用 Simple_DOM 来获取明文。虽然,如果我手动执行或使用任何其他解析引擎,我会得到相同的结果。

【问题讨论】:

  • 这听起来不对...您有源数据的示例 URL 吗?还是发生这种情况的简短 sn-p(带标记)?我假设它不会在浏览器中以这种方式显示(如果是,它就是 GIGO)
  • 如果是换行符 PHP nl2br() 应该会有所帮助。看看htmlspecialchars()htmlentities()
  • 我无法访问标记,它是通过简单的 DOM 对象函数进行预处理的,我试图对其进行操作但没有成功。纯文本获取file_get_html('url')->plaintext。不确定它在导致不稳定间距的过程中丢失了什么。可能是自动换行器。
  • @sarnold:哦,酷。不知道有一个缩写! =)

标签: php html parsing whitespace simpledom


【解决方案1】:

不幸的是,我没有针对您的具体问题的方法,但是句子之间缺少的空格是否可能实际上是您的文本查看器(无论是什么)没有显示给您的换行符(例如 \n)?

也许尝试这样的事情只是为了确保

var articleContent = ... // get content
articleContent = articleContent.replace(/\n/g, ' NEW LINE ');

【讨论】:

  • 使用 Simple_DOM 从 url 中提取纯文本。 php。我可以通过剥离标签/CSS/HTML 手动完成,但得到相同的结果。间距随机。我会尝试换行技巧并回来 - 谢谢
  • 不,剥离 \n 不起作用 - 仍然是随机间距。
【解决方案2】:

尝试做:

$str = trim(preg_replace('~([(].+?[.])\s(.+?[)])~', '$1$2', str_replace('.', '. ', $str)));

【讨论】:

  • 嗯,这个脚本很有希望,但它抹杀了我的文本和分隔符的行为。股票代码消失了。引号变成了括号。不幸的是,我不得不访问 HTML 标记,因为它是通过简单 DOM 对象处理的。
  • @user723220:我们可以解决这个问题... =) 你能看出间距有什么不同吗?此外,如果您可以发布以下 sn-p 的输出,这将非常有帮助:echo implode('|', array_map('ord', str_split($yourString)));.
  • 我从那个10|32|115|97|105|100|44|32|97|110|100|32|97|116|32|108|101|97|115|116|32|49|55|32|112|101|111|112|108|101|32|119|101|114|101|32|107|10得到了数千个数字流
  • 我查看了源 HTML。在大多数句子之后出现此代码</p><span id="midArticle_8"></span><p>。一定是罪魁祸首。它必须被剥离并离开“”而不是“”。我联系了 Simple_DOM 的作者,看看他是否有任何想法来查找这个解析在 simple_dom_php 中发生的位置。问题是这一切都是通过对象巧妙地完成的,所以你不知道什么是什么。
  • 上面的preg_replace好像没有效果。它可能会减少一些卡住的句子,但其他文章根本没有。
猜你喜欢
  • 2012-10-10
  • 1970-01-01
  • 2014-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
  • 2013-02-10
  • 2013-07-14
相关资源
最近更新 更多