使用Word nGrams的多字词术语向量?

时间:2014-12-09 19:29:12

标签: elasticsearch n-gram term-vectors

我的目标是构建一个索引,对于每个文档,将通过单词ngrams(uni,bi和tri)将其分解,然后捕获所有这些单词ngrams上的术语向量分析。这可能与Elasticsearch有关吗?

例如,对于包含"红色汽车驱动的文档字段。"我将能够获得信息:

red - 1 instance
car - 1 instance
drives - 1 instance
red car - 1 instance
car drives - 1 instance
red car drives - 1 instance

提前致谢!

1 个答案:

答案 0 :(得分:5)

假设您已经知道Term Vectors api,您可以在索引时应用shingle token filter,以便在令牌流中将这些术语添加为彼此独立。

min_shingle_size设置为1(而不是默认值2),将max_shingle_size设置为至少3(而不是默认值2)

基于你离开"""在应用带状符过滤器之前,您应该使用stop words filter之外的可能术语。

分析仪设置如下:

{
  "settings": {
    "analysis": {
      "analyzer": {
        "evolutionAnalyzer": {
          "tokenizer": "standard",
          "filter": [
            "standard",
            "lowercase",
            "custom_stop",
            "custom_shingle"
          ]
        }
      },
      "filter": {
        "custom_stop": {
            "type": "stop",
            "stopwords": "_english_",
            "enable_position_increments":"false"
        },
        "custom_shingle": {
            "type": "shingle",
            "min_shingle_size": "1",
            "max_shingle_size": "3"
        }
      }
    }
  }
}

您可以使用_analyze api endpoint测试分析仪。