【发布时间】:2014-10-20 16:00:45
【问题描述】:
我也在查看关键字类型的计数机制,例如在此处发布的Word Frequency Counter in XSLT:
我的皱纹是我的关键字可能有多个单词,例如:
<xsl:variable name="stopwords"
select="('audio codec', 'dual audio', 'audio switch' )"/>
我正在使用上述问题的代码,并且有这样的事情:
<xsl:stylesheet
version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="stopwords"
select="('audio codec', 'dual audio', 'audio switch' )"/>
<wordcount>
<xsl:for-each-group group-by="." select="
for $w in //text()/tokenize(., '\W+')[not(.=$stopwords)] return $w">
<word word="{current-grouping-key()}" frequency="{count(current-group())}"/>
</xsl:for-each-group>
</wordcount>
</xsl:template>
当然,使用 '\W+' 进行标记会将其分解为单词,但这与我的停用词不匹配,因为它们是并且可以是多个单词。
当关键字可能有多个单词时,任何人都可以提出一种优雅的单词计数方法吗?
感谢您在这方面的任何帮助!
罗斯
【问题讨论】:
-
有停用词组与计数单词不一致。你要开始数短语而不是单词吗?然后考虑“w1 w2 w3” 你想数 (w1, w2, w3) 还是 (w1 w2, w2 w3) 还是 (w1 w2 w3) 还是所有这些集合的并集?
-
如果您仍然要计算单词而不是短语,但希望停用词组不会影响计数,那么在执行计数之前删除停用词组可能会满足您的要求。
-
抱歉误导。我的停用词实际上是我想计算实例的短语。我可以想出循环遍历的方法,检查每个短语,但希望有一种类似的优雅方法来计算短语出现的次数,就像这个例子对单个单词所做的那样。
-
kjhughes,您的答案刚刚被删除。你或其他人这样做了吗?
-
必须修复以处理文本节点内的多个
keyphrases。现在恢复了。我希望它有所帮助。
标签: xml xslt xslt-2.0 word-count