[ 
https://issues.apache.org/jira/browse/OPENNLP-1977?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Richard Zowalla closed OPENNLP-1977.
------------------------------------
    Resolution: Fixed

Fixed by https://github.com/apache/opennlp/pull/1310 (6331d6e19).

> SentenceVectorsDL returns the [CLS] hidden state instead of the pooled 
> sentence embedding
> -----------------------------------------------------------------------------------------
>
>                 Key: OPENNLP-1977
>                 URL: https://issues.apache.org/jira/browse/OPENNLP-1977
>             Project: OpenNLP
>          Issue Type: Bug
>            Reporter: Richard Zowalla
>            Priority: Major
>             Fix For: 3.0.0
>
>
> {{SentenceVectorsDL.getVectors}} returns {{v\[0\]\[0\]}}, the raw last hidden 
> state of the first \(\[CLS\]\) token. The class targets 
> sentence\-transformers models converted to ONNX, and 
> {{SentenceVectorsDLEval}} uses all\-MiniLM\-L6\-v2, whose 
> {{1\_Pooling/config.json}} sets {{pooling\_mode\_mean\_tokens: true}} and 
> {{pooling\_mode\_cls\_token: false}}, followed by a Normalize module. So the 
> returned vector is not the embedding the model was trained to produce, and 
> similarity scores differ from sentence\-transformers.
> Suggested fix: read the pooling mode and normalization from the model's 
> sentence\-transformers metadata \({{1\_Pooling/config.json}}, 
> {{modules.json}}\) when present, otherwise require it as an option; mean 
> pooling must exclude padding positions. Since the 3.0.0 release note already 
> states that vectors change, the default should be settled before 3.0.0.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to