解析文本文档的最佳方法


Best way to parse a text document

我试图在PHP中解析纯文本文档,但不知道如何正确地做到这一点。我想把每个单词分开,给它们分配一个ID,并以JSON格式保存结果。

示例文本:

"Hello, how are you (today)"

这是我现在正在做的:

$document_array  = explode(' ', $document_text);
json_encode($document_array);
结果JSON是
[["Hello,"],["how"],["are"],["you"],["(today)"]]

我如何确保空格保持在适当的位置,并且符号不包括在单词…

[["Hello"],[", "],["how"],[" "],["are"],[" "],["you"],["  ("],["today"],[")"]]

我确定需要某种正则表达式…但我不知道该采用什么样的模式来处理所有的情况……有什么建议吗?

这实际上是一个非常复杂的问题,也是一个需要进行大量学术研究的问题。这听起来很简单(只是空白分割!)也许还有一些标点规则……),但你很快就会遇到问题。"didn't"是一个词还是两个词?连字符的单词呢?有些可能是一个词,有些可能是两个词。如果有多个连续的标点符号呢?所有格还是引号?等等。甚至决定一个句子的结尾都是很重要的。(这只是一个句号,对吗?!)

这个问题是标记化之一,也是搜索引擎非常重视的主题。老实说,你应该在你选择的语言中寻找一个标记器。

也许是这样:?

array_filter(preg_split('/'b/', $document_text))

'array_filter',删除结果数组的第一个和/或最后一个索引处的空值,如果字符串以单词边界开始或结束('b参见:http://php.net/manual/en/regexp.reference.escape.php)