日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

12.term_vectors查看

發(fā)布時間:2024/2/28 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 12.term_vectors查看 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 1. Term Vectors 簡介
      • 1. 返回值
      • 2. term過濾
      • 3. 示例:自動生成term向量
      • 4. 示例:request 中傳入doc
      • 5. Per-field 分析器
      • 6. 示例:term過濾

1. Term Vectors 簡介

Term Vectors(term向量)
返回特定文檔field中的term的信息和統(tǒng)計信息。文檔可以存儲在索引中或由request提供。term向量請求的結(jié)果默認(rèn)為實時的,不是近實時的。這可以通過將realtime參數(shù)設(shè)置為false來更改為非實時的。

GET /twitter/_termvectors/1

也可以使用url中的參數(shù)指定檢索信息的field:

GET /twitter/_termvectors/1?fields=message

或通過在請求主體中添加請求的field(參見下面的示例)。也可以使用通配符指定field,類似于多匹配查詢

注意

請注意/_termvector的使用方式在2.0中已廢棄,請使用_termvectors替代。

1. 返回值

請求可以得到三種類型的值:term信息,term統(tǒng)計和field統(tǒng)計。默認(rèn)情況下,所有term信息與field統(tǒng)計信息都會被返回,但不包含term統(tǒng)計信息。

term信息

  • 在field中的詞頻(總是返回)
  • term位置(positions: true)
  • 開始與結(jié)束的offset(offsets: true)
  • term payload信息(payloads: true),會使用base64編碼
  • 如果請求的信息沒有存儲在索引中,會嘗試進(jìn)行即時計算。另外,也可以基于請求方提供的doc計算term向量的信息。
    也就是說mapping中不需要單獨定義term_vector 的mapping param ,但是使用的時候有時候表現(xiàn)有些奇怪。
    比如我使用

    GET seats/_termvectors/8092

    可能無法召回vector信息,但是增加fields字段參數(shù),比如下面,就可以獲取到vector信息了

    GET seats/_termvectors/8092?fields=actors

    注意

    offset 的start和end 是跟軍UTF-16編碼來計算的。如果要使用這些offset來從原始文本中獲取term,則應(yīng)確保使用UTF-16對正在使用的子字符串進(jìn)行編碼。

    term統(tǒng)計
    設(shè)置term_statistics為true(默認(rèn)為false)將返回:

  • 總詞頻(所有文件中的term頻率)tf
  • 文檔頻率(包含term的文檔數(shù))df
  • 默認(rèn)情況下這些值不返回,因為term統(tǒng)計數(shù)據(jù)會嚴(yán)重影響性能。

    field統(tǒng)計
    將field_statistics設(shè)置為false(默認(rèn)值為true)將省略:

  • 文檔數(shù)(包含此field的文檔數(shù))
  • 文檔頻率的總和(本field中所有term的文檔頻率的總和)
  • 詞頻的總和(該field中每個term的總詞頻的總和)
  • 2. term過濾

    可以根據(jù)term向量的tf-idf特性來對term向量進(jìn)行過濾,這個有助于篩選比較有用的特診向量。
    可以使用以下參數(shù)

  • max_num_terms: 每個field必須返回的最大term數(shù)。默認(rèn)為25。
  • min_term_freq: 在源文檔中忽略少于此頻率的單詞。默認(rèn)為1。
  • max_term_freq: 在源文檔中忽略超過此頻率的單詞。默認(rèn)為無界。
  • min_doc_freq: 忽略文檔頻率少于此參數(shù)的term。默認(rèn)為1。
  • max_doc_freq: 忽略文檔頻率大于此參數(shù)的term。默認(rèn)為無界。
  • min_word_length: 字詞長度低于此參數(shù)的將被忽略。默認(rèn)為0。
  • max_word_length: 字詞長度大于此參數(shù)的將被忽略。默認(rèn)為無界(0)。
  • term和field統(tǒng)計信息不是精準(zhǔn)的。刪除的doc不會被統(tǒng)計。而且僅針對請求文檔所在的分片檢索信息。因此,term和field的統(tǒng)計信息只是作為相對的參考信息,準(zhǔn)確的數(shù)字沒有意義,。默認(rèn)情況下,當(dāng)請求的時候攜帶doc文檔的時候,會隨機(jī)選擇一個碎片來獲取統(tǒng)計數(shù)據(jù)。有routing的話僅使用路由來命中特定的分片。

    示例:返回存儲term向量
    首先,我們創(chuàng)建一個存儲term向量、有payload等的索引:

    PUT /twitter { "mappings": {"properties": {"text": {"type": "text","term_vector": "with_positions_offsets_payloads","store" : true,"analyzer" : "fulltext_analyzer"},"fullname": {"type": "text","term_vector": "with_positions_offsets_payloads","analyzer" : "fulltext_analyzer"}}},"settings" : {"index" : {"number_of_shards" : 1,"number_of_replicas" : 0},"analysis": {"analyzer": {"fulltext_analyzer": {"type": "custom","tokenizer": "whitespace","filter": ["lowercase","type_as_payload"]}}}} }

    然后,我們添加一些文檔:

    PUT /twitter/_doc/1 {"fullname" : "John Doe","text" : "twitter test test test " }PUT /twitter/_doc/2 {"fullname" : "Jane Doe","text" : "Another twitter test ..." }

    以下請求返回文檔1(John Doe)中fieldtext的所有信息和統(tǒng)計信息:

    GET /twitter/_termvectors/1 {"fields" : ["text"],"offsets" : true,"payloads" : true,"positions" : true,"term_statistics" : true,"field_statistics" : true }返回{"_id": "1","_index": "twitter","_type": "_doc","_version": 1,"found": true,"took": 6,"term_vectors": {"text": {"field_statistics": {"doc_count": 2,"sum_doc_freq": 6,"sum_ttf": 8},"terms": {"test": {"doc_freq": 2,"term_freq": 3,"tokens": [{"end_offset": 12,"payload": "d29yZA==","position": 1,"start_offset": 8},{"end_offset": 17,"payload": "d29yZA==","position": 2,"start_offset": 13},{"end_offset": 22,"payload": "d29yZA==","position": 3,"start_offset": 18}],"ttf": 4},"twitter": {"doc_freq": 2,"term_freq": 1,"tokens": [{"end_offset": 7,"payload": "d29yZA==","position": 0,"start_offset": 0}],"ttf": 2}}}} }

    3. 示例:自動生成term向量

    未明確存儲在索引中的term向量將自動計算。以下請求返回文檔1中field的所有信息和統(tǒng)計信息,即使term尚未明確存儲在索引中。請注意,對于text這個field,因為設(shè)置mapping的時候指定了term_vector mapping param,所以這個字段的termvector不會重新生成。

    GET /twitter/_termvectors/1 {"fields" : ["text", "some_field_without_term_vectors"],"offsets" : true,"positions" : true,"term_statistics" : true,"field_statistics" : true }

    some_field_without_term_vectors 代表了沒有term_vectors屬性的字段

    4. 示例:request 中傳入doc

    還可以為request中的doc生成term向量,也就是生成索引中不存在的文檔。例如,以下請求將返回與示例1中相同的結(jié)果。所使用的映射由索引和類型確定。

    如果動態(tài)映射打開(默認(rèn)),則不在原始映射中的文檔field將被動態(tài)創(chuàng)建。

    GET /twitter/_termvectors {"doc" : {"fullname" : "John Doe","text" : "twitter test test test"} }

    5. Per-field 分析器

    另外,可以通過使用per_field_analyzer參數(shù)來提供不同于當(dāng)前的分析器。這對于以任何方式生成term向量是有用的,特別是在使用request中的doc時。當(dāng)為已經(jīng)存儲的term向量提供分析器時,將重新生成項向量。

    GET /twitter/_termvectors {"doc" : {"fullname" : "John Doe","text" : "twitter test test test"},"fields": ["fullname"],"per_field_analyzer" : {"fullname": "keyword"} }

    響應(yīng):

    {"_index": "twitter","_type": "_doc","_version": 0,"found": true,"took": 6,"term_vectors": {"fullname": {"field_statistics": {"sum_doc_freq": 2,"doc_count": 4,"sum_ttf": 4},"terms": {"John Doe": {"term_freq": 1,"tokens": [{"position": 0,"start_offset": 0,"end_offset": 8}]}}}} }

    6. 示例:term過濾

    最后,返回的term可以根據(jù)他們的tf-idf分?jǐn)?shù)進(jìn)行過濾。在下面的例子中,我們從具有給定“plot”field值的request中的doc中獲取三個“interesting”的關(guān)鍵字。請注意,關(guān)鍵字“Tony”或任何停止詞不是響應(yīng)的一部分,因為它們的tf-idf必須太低。

    GET /imdb/_termvectors {"doc": {"plot": "When wealthy industrialist Tony Stark is forced to build an armored suit after a life-threatening incident, he ultimately decides to use its technology to fight against evil."},"term_statistics" : true,"field_statistics" : true,"positions": false,"offsets": false,"filter" : {"max_num_terms" : 3,"min_term_freq" : 1,"min_doc_freq" : 1} }

    響應(yīng):

    {"_index": "imdb","_type": "_doc","_version": 0,"found": true,"term_vectors": {"plot": {"field_statistics": {"sum_doc_freq": 3384269,"doc_count": 176214,"sum_ttf": 3753460},"terms": {"armored": {"doc_freq": 27,"ttf": 27,"term_freq": 1,"score": 9.74725},"industrialist": {"doc_freq": 88,"ttf": 88,"term_freq": 1,"score": 8.590818},"stark": {"doc_freq": 44,"ttf": 47,"term_freq": 1,"score": 9.272792}}}} }

    總結(jié)

    以上是生活随笔為你收集整理的12.term_vectors查看的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。