<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Embedding-based Query Spelling Correction</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ines Zelch</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gustav Lahmann</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Matthias Hagen</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Friedrich-Schiller Universität Jena</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Universität Leipzig</string-name>
        </contrib>
      </contrib-group>
      <abstract>
        <p>For many retrieval systems, correcting spelling errors in the queries that searchers submit is an essential step of query understanding. Inspired by a blog post on spelling correction from 2018, we implement and analyze a simple embedding-based query spelling correction approach, and we compare the impact on retrieval efectiveness to Hunspell-, pyspellchecker-, and GPT-3.5-based spelling correction. Our experiments with BM25 and PL2 on corpora of the TIRA / TIREx evaluation platform show that especially Hunspell and pyspellchecker are much worse than a do-nothing baseline that does not even try to correct errors. The embedding-based approach comes closest to the baseline but also does not correct many errors, while the GPT-3.5-based approach corrects more errors but at the same time already changes many correct queries and thus worsens the overall retrieval efectiveness. As a software contribution, we provide the four spelling correctors in a Docker image so that they can be easily included as components in retrieval systems and retrieval pipelines.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Query spelling correction</kwd>
        <kwd>Query understanding</kwd>
        <kwd>Word embeddings</kwd>
        <kwd>Information retrieval</kwd>
        <kwd>Web search</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        When searchers type a query to express an information need, it can easily happen that spelling errors
are included—for instance, by “fat-fingering” on the keyboard or by not knowing how to spell a word.
Previous studies showed that about 10–20% of queries contain some spelling errors [
        <xref ref-type="bibr" rid="ref1 ref2 ref3 ref4">1, 2, 3, 4</xref>
        ]. Thus,
one of the earliest steps in a search engine’s query understanding pipeline often is spelling correction.
      </p>
      <p>Typical spelling errors include missing or additional characters (deletion, insertion), missing or
additional spaces and special characters, wrong characters (substitution), and swapped characters
(transposition); Table 1 shows some examples. In a retrieval pipeline, query spelling errors may lead to
several problems ranging from tokenization issues (e.g., for missing or additional spaces), over issues
with stemming / lemmatization or entity linking (e.g., misspellings may not match stemming rules or
gazetteer entries), to problems with lexically matching a misspelled query to relevant documents.</p>
      <p>
        In this paper, inspired by a 2018 blog post [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], we implement and analyze an embedding-based query
spelling correction approach. We compare it to Hunspell-, pyspellchecker-, and GPT-3.5-based spelling
correction with respect to the impact on actual retrieval efectiveness. As a software contribution to
the WOWS 2024 workshop [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], we additionally provide a Docker image with the four approaches as
easy-to-use components for retrieval systems and retrieval pipelines.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Related Work</title>
      <p>
        Spelling errors are either so-called real-word errors (the misspelling is another existing word like ‘their’
instead of ‘there’) or non-word errors (a misspelling that is not in a dictionary) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Automatic spelling
correction approaches usually first detect spelling errors and then rank some suggested correction
candidates [
        <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
        ]. While non-word errors can be detected via unsuccessful dictionary lookups, real-word
errors are harder to detect as they usually require to consider a word’s context [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>
        Early approaches for query spelling correction were based on query log analyses [
        <xref ref-type="bibr" rid="ref10 ref11">10, 11</xref>
        ] but later
also included n-gram models [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] and discriminative approaches like SVMs [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In the context of
neural retrieval models—that also have problems with misspelled queries—, some recent studies aim at
not applying query spelling correction prior to the actual retrieval but instead to increase the models’
robustness against misspellings by including simulated typos in the models’ training data [
        <xref ref-type="bibr" rid="ref14">14, 15, 16</xref>
        ]. Yet,
based on these studies’ results, query spelling correction still seems to yield better retrieval efectiveness.
      </p>
      <p>
        As for the accuracy of detecting and correcting query spelling errors, a 2017 study by Hagen et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]
on a corpus of about 55,000 queries (9200 with errors) showed that a do-nothing baseline (i.e., not even
trying to correct any query) is a rather strong baseline (&gt; 80% of the queries have no spelling errors)
that, back in 2017, was only beaten by Google’s query spelling correction.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Approach</title>
      <p>
        In 2018, Rushton described an idea for general spelling correction based on a “correction vector” in a
word embedding space [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Word embeddings are dense contextualized vector representations of words
and usually are trained on large text corpora. The idea of early embedding approaches like GloVe [17]
was that words with a similar meaning probably occur in similar textual contexts so that they should
end up in a similar region of the embedding space. Such embeddings were then also promoted as
allowing operations like the famous analogy “king is to queen as man is to woman” [17]:
→−−king − →−−man +→−−− −woman ≈ →−− −queen .
      </p>
      <p>As illustrated in Figure 1, the vector representation of ‘king’ lies in a similar direction from ‘man’ as the
representation of ‘queen’ lies to ‘woman’ (a “royal” direction / vector), and the representation of ‘queen’
lies in a similar direction from ‘king’ as ‘woman’ lies to ‘man’ (a “female” vector).</p>
      <p>
        Rushton [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] suggested to use GloVe word embeddings to detect and correct spelling errors. His
ifrst idea was that the embedding of an incorrectly spelled word should be close to the embedding
of the respective correctly spelled word, so that a correction for a misspelling could be found by
looking at the neighbors of the misspelling’s embedding. However, instead of the correct spelling
being embedded close to a misspelling, Rushton found that the nearest neighbors of a misspelling’s
embedding actually are embeddings of other misspellings of the same or synonymous words. He then
hypothesized that the information about the correctness of a spelling is already implicitly encoded in a
word’s GloVe embedding during training. As one design goal of the GloVe embedding approach was to
encode semantic and syntactic properties of a word as linear substructures in the embedding vector
space, Rushton realized that a misspelling’s embedding difers in some dimensions from the respective
correct word’s embedding, while being almost identical in the others. When calculating the diference
vector of a misspelling and the correct word, the dimensions encoding the misspelling property have
the highest values. Rushton thus suggested to average the diference vectors for many misspellings
to find a common “spelling correction” vector similar to the “royal” or “female” vectors in the above
king–queen example and to then basically calculate respective (mis-)spelling “analogies” like:
→−− − − − −compute→r−− −− − − − −compoute− →r−− − +−− − − −extraordianr→y−−− − ≈ − − − − −extraordinary .
      </p>
      <p>Starting with an Oxford Dictionary list of common misspellings and corrections,1 Rushton calculated
a spelling correction vector s⃗c by averaging the diferences of the respective pairs of GloVe embeddings.
As for the actual spelling correction, Rushton tried to add s⃗c to the embedding of a potentially misspelled
word (in our case, we simply do it for every query word), and to then search for the cosine similarity-wise
nearest neighbor as the respective correct word (also using some further heuristics that check for plural
forms or common sufixes). In experiments, Rushton found that corrections can be found better when
linearly stretching or shortening s⃗c based on the angle between a potential misspelling’s embedding
and s⃗c. He empirically optimized the linear transformation’s parameters and then suggested to use the
transformed s⃗copt as the basis of an embedding-based spelling correction approach.</p>
      <p>For our re-implementation of Rushton’s idea, we use 300-dimensional GloVe embeddings2 of the
2 million most frequent words trained on 840 billion Common Crawl tokens [17]. We calculate Rushton’s
exact spell correction vector s⃗c from his initial data and we use the linear transformation he found to
optimize the spelling correction to arrive at s⃗copt . In a further pre-processing to speed up the actual
query spell correction, we create an error correction hash table of words and their “best” spell correction
by adding s⃗copt to each of the 2 million embeddings and looking for the respective nearest neighbor.
To reduce the size of the table, we remove pairs where the nearest-neighbor “correction” actually has
the same spelling as the original word, and thus only store pairs with diferent spelling in the table. To
spell-correct a query, we lowercase all words, and check for each individually whether the hash table
has a match. Words that are not found in the hash table, are simply considered correct.</p>
      <p>We compare the embedding-based approach to Hunspell-, pyspellchecker-, and GPT-3.5-based
approaches. Hunspell3 is an often used spell checker (e.g., OpenOfice and Mozilla), while pyspellchecker 4
is based on a blog post by Peter Norvig;5 from simple edits of a word (Levenshtein distance), it chooses
the one with the highest frequency in a word frequency list. For the GPT-3.5-based approach, we use the
prompt: “You are a spelling corrector for search queries. You respond always exactly with the corrected
search query. Please correct all spelling errors in the query: &lt;query&gt;”.</p>
      <p>Our implementations of these query spelling correction approaches are freely accessible on GitHub.6
Listing 1 shows a code snippet that applies the embedding-based spelling correction (rushton) and
evaluates it for retrieval with BM25 and PL2 on the ANTIQUE dataset.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Evaluation</title>
      <p>For our experiments, we run the query spelling correction approaches on the queries of the ANTIQUE
dataset [19] and on the TREC 2019 and 2020 Deep Learning tracks [20, 21] before submitting the queries
to BM25 and PL2. Our experiments were conducted on the TIRA [22] / TIREx [23] evaluation platform.</p>
      <p>Table 2 shows the retrieval efectiveness results (nDCG@10). As kind of an upper bound for using any
of the spell correctors, we also give the results of an “oracle” that always chooses the nDCG@10-wise
best output of the do-nothing baseline and of the four spell correctors. For all three datasets, the oracle
1languages.oup.com/
2https://nlp.stanford.edu/projects/glove/
3github.com/hunspell/hunspell
4pypi.org/project/pyspellchecker/
5norvig.com/spell-correct.html
6https://github.com/OpenWebSearch/wows24-query-spelling-correction
Listing 1: Code snippet to run and evaluate the embedding-based query spelling correction (rushton)
for the retrieval models BM25 and PL2 on the ANTIQUE dataset.
from tira.third_party_integrations import ensure_pyterrier_is_loaded()
import pyterrier as pt
from tira.rest_api_client import Client
tira = Client()
ensure_pyterrier_is_loaded
data = ’antique-test-20230107-training’
dataset = pt.get_dataset(f’irds:ir-benchmarks/{data}’)
index = tira.get_run_output(’ir-benchmarks/tira-ir-starter/Index
(tira-ir-starterpyterrier)’, data) + ’/index’
index = pt.IndexFactory.of(index)
bm25 = pt.BatchRetrieve(index, wmodel="BM25")
pl2 = pt.BatchRetrieve(index, wmodel="PL2")
tokeniser = pt.autoclass("org.terrier.indexing.tokenisation.Tokeniser").getTokeniser()
def pt_tokenise(text):</p>
      <p>return ’ ’.join(tokeniser.getTokens(text))
rushton = tira.pt.transform_queries(’workshop-on-open-web-search/qspell/rushton’, data)
toks = pt.apply.query(lambda i: pt_tokenise(i[’query’]))
sys = [bm25, pl2, rushton &gt;&gt; toks &gt;&gt; bm25, rushton &gt;&gt; toks &gt;&gt; pl2]
names = [’BM25’, ’PL2’, ’rushton &gt;&gt; BM25’, ’rushton &gt;&gt; PL2’]
pt.Experiment(sys, dataset.get_topics(’query’), dataset.get_qrels(), [’ndcg_cut.10’],
names=names, verbose=True)
efectiveness is a bit better than not correcting any error (sometimes only in the third decimal, though).
The do-nothing baseline on average is better than the individual correction approaches among which
the embedding-based approach (line ‘Rushton’ in the table) is best and substantially better than the
“standard” Hunspell- and pyspellchecker-based approaches. The corrections of GPT-3.5 also yield a
worse retrieval efectiveness than the embedding-based approach. On TREC DL ’20, the
embeddingbased approach is as efective as the do-nothing baseline (as both do not change any query), while on
TREC DL ’19, the embedding-based approach is slightly better than doing nothing and as efective as
the oracle. Still, on TREC DL ’19, the oracle and the embedding-based approach only change one query
(why did the us volunterilay enter ww1) and, interestingly, not even correct the actual spelling
error ‘volunterilay’, but change the abbreviation ‘ww1’ to the more general term ‘war’.</p>
      <p>Possible reasons for the do-nothing baseline overall being so close to the oracle while some correction
approaches are much worse are (1) that the queries of the TREC DL tracks hardly contain misspellings,
(2) that the correction approaches also do not correct many misspellings, and (3) that the correction
approaches often even “worsen” queries by changing correctly spelled words. Table 3 gives the respective
statistics of spelling errors per error type (manually identified), of the number of corrected errors per
type and approach, and of the number of incorrectly changed queries per approach. The most frequent
error are missing apostrophes (e.g., ‘don t’) probably introduced by some query parser before logging.</p>
      <p>Among the correction approaches, the GPT-3.5-based one has the most corrections. But it also often
incorrectly changes queries which leads to an overall worse average retrieval efectiveness than the
embedding-based approach that corrects hardly any of the misspellings but—just like the do-nothing
baseline—also does not worsen most of the already correct queries. The many incorrect changes of the
Hunspell- and pyspellchecker-based approaches explain their bad overall nDCG impact. For example,
on the ANTIQUE dataset with 63 misspellings in 53 of the 200 queries, the embedding-based approach
corrects 9 errors and has no incorrect changes, whereas Hunspell and pyspellchecker correct 14 and
17 errors, respectively, but at the same time incorrectly change 52 and 75 queries.</p>
      <p>Inspecting the approaches’ changes in more detail, we found that GPT-3.5 often appends
question marks to queries formulated as questions and corrects the queries’ grammar (e.g.,
why *does* hot air rise up*?*). These changes might not be incorrect, but they do not help BM25
or PL2 during retrieval. Some few incorrect changes and artifacts like ‘corrected search query’
reduce the retrieval efectiveness for GPT-3.5. At the same time, GPT-3.5 is the only approach that
corrects misspellings in person names like ‘natalie holloway’ → ‘natalee holloway’ or in
product names like ‘citriscidal’ → ‘citricidal’. Some “normal” typos like ‘prsented’ are corrected
by all four approaches, while only the embedding- and GPT-3.5-based approaches correct the query
‘how can i keep my rabit indoors’. Hunspell and pyspellchecker change ‘rabit’ to ‘barit’ or
‘habit’ instead. Other incorrect changes by Hunspell and pyspellchecker are unrelated words chosen as
“correction” (e.g., ‘wifi’ to ‘wife’). For pyspellchecker, for example, this phenomenon can be explained
by the use of the word frequency list that leads to replacing unknown or uncommon words with more
frequent lexically similar words—with a negative impact on the retrieval results. This does not happen
for the embedding-based approach as unknown words (i.e., words without GloVe embeddings) are
considered as correctly spelled—with the downside that many typos are not part of the GloVe vocabulary.
Limitations Even though the embedding-based query spelling correction achieves acceptable results
in the evaluation, it also comes with some severe limitations. First, the approach can only correct errors
for which both the misspelled word and the correct word have a corresponding GloVe embedding.
Misspelled words where either the misspelling or the correct word were not present in the GloVe
embedding training data cannot be corrected. Second, the embedding-based correction works on single
words only and thus cannot detect errors involving missing or additional spaces (either the correction
or the misspelling would be at least two words). And third, again due to the single-word characteristic
of the embeddings, context-dependent spelling errors (i.e., real-word errors) cannot be corrected.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion and Future Work</title>
      <p>
        In this paper, we analyzed four query spelling correction approaches that we implemented as a software
contribution to the WOWS 2024 workshop [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Among the approaches, an embedding-based one yields
better retrieval results than the Hunspell-, pyspellchecker-, and GPT-3.5-based approaches. Still, on
average, all approaches yield worse retrieval results than a simple do-nothing baseline that does not
change any query. One reason is that the spell correctors tend to also change already correct queries
and thereby worsen the retrieval efectiveness.
      </p>
      <p>As hardly any of the TREC Deep Learning track queries contain misspellings, it could be an interesting
idea for a further study to artificially create variants of the queries with some realistic typos and to
measure the retrieval impact on these. Another interesting direction to further analyze the strengths
and weaknesses of embedding-based query spelling correction is to test other embedding approaches
(e.g., word2vec or fastText) and to combine embedding-based correction with other approaches in some
system that might try to choose the best correction approach on a per-query basis.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgments References</title>
      <p>Partially supported by the European Union’s Horizon Europe research and innovation programme
under grant agreement No 101070014 (OpenWebSearch.eu, https://doi.org/10.3030/101070014).
[15] S. Zhuang, G. Zuccon, Dealing with Typos for BERT-based Passage Retrieval and Ranking, in:</p>
      <p>Proceedings of EMNLP, 2021, pp. 2836–2842.
[16] S. Zhuang, G. Zuccon, CharacterBERT and Self-Teaching for Improving the Robustness of Dense</p>
      <p>Retrievers on Queries with Typos, in: Proceedings of SIGIR, 2022, pp. 1444–1454.
[17] J. Pennington, R. Socher, C. D. Manning, Glove: Global Vectors for Word Representation, in:</p>
      <p>Proceedings of EMNLP, 2014, pp. 1532–1543.
[18] K. Ethayarajh, D. Duvenaud, G. Hirst, Towards Understanding Linear Word Analogies, in:</p>
      <p>Proceedings of ACL, 2019, pp. 3253–3262.
[19] H. Hashemi, M. Aliannejadi, H. Zamani, W. B. Croft, ANTIQUE: A Non-factoid Question Answering</p>
      <p>Benchmark, in: Proceedings of ECIR, 2020, pp. 166–173.
[20] N. Craswell, B. Mitra, E. Yilmaz, D. Campos, E. M. Voorhees, Overview of the TREC 2019 Deep</p>
      <p>Learning Track, in: Proceedings of TREC, volume abs/2003.07820, 2019.
[21] N. Craswell, B. Mitra, E. Yilmaz, D. Campos, Overview of the TREC 2020 Deep Learning Track, in:</p>
      <p>Proceedings of TREC, volume 1266, 2020.
[22] M. Fröbe, M. Wiegmann, N. Kolyada, B. Grahm, T. Elstner, F. Loebe, M. Hagen, B. Stein, M. Potthast,
Continuous Integration for Reproducible Shared Tasks with TIRA.io, in: Proceedings of ECIR,
Berlin Heidelberg New York, 2023, pp. 236–241.
[23] M. Fröbe, J. Reimer, S. MacAvaney, N. Deckers, S. Reich, J. Bevendorf, B. Stein, M. Hagen, M.
Potthast, The Information Retrieval Experiment Platform, in: Proceedings of SIGIR, 2023, pp.
2826–2836.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>H.</given-names>
            <surname>Dalianis</surname>
          </string-name>
          ,
          <article-title>Evaluating a Spelling Support in a Search Engine</article-title>
          , in
          <source>: Proceedings of NLDB</source>
          ,
          <year>2002</year>
          , pp.
          <fpage>183</fpage>
          -
          <lpage>190</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Cucerzan</surname>
          </string-name>
          , E. Brill,
          <article-title>Spelling Correction as an Iterative Process that Exploits the Collective Knowledge of Web Users</article-title>
          ,
          <source>in: Proceedings of EMNLP</source>
          <year>2004</year>
          ,
          <year>2004</year>
          , pp.
          <fpage>293</fpage>
          -
          <lpage>300</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A. Z.</given-names>
            <surname>Broder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Ciccolo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Gabrilovich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Josifovski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Metzler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Riedel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Yuan</surname>
          </string-name>
          ,
          <article-title>Online Expansion of Rare Queries for Sponsored Search</article-title>
          , in: Proceedings of WWW,
          <year>2009</year>
          , pp.
          <fpage>511</fpage>
          -
          <lpage>520</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Hagen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Potthast</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gohsen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Rathgeber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Stein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A</given-names>
            <surname>Large-Scale Query</surname>
          </string-name>
          Spelling Correction Corpus,
          <source>in: Proceedings of SIGIR</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>1261</fpage>
          -
          <lpage>1264</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>E.</given-names>
            <surname>Rushton</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A Simple</given-names>
            <surname>Spell Checker Built from Word Vectors</surname>
          </string-name>
          ,
          <source>Blog post on Medium</source>
          ,
          <year>2018</year>
          . URL: https://web.archive.org/web/20231204160726/https://edrushton.medium.
          <article-title>com/ a-simple-spell-checker-built-from-word-vectors-9f28452b6f26.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.</given-names>
            <surname>Farzana</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Fröbe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Granitzer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Hendriksen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Hiemstra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Potthast</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Zerhoudi</surname>
          </string-name>
          , 1st International Workshop on Open Web Search (WOWS),
          <source>in: Proceedings of ECIR</source>
          ,
          <year>2024</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Hládek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Staš</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Pleva</surname>
          </string-name>
          ,
          <source>Survey of Automatic Spelling Correction, Electronics</source>
          <volume>9</volume>
          (
          <year>2020</year>
          )
          <fpage>1670</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>K.</given-names>
            <surname>Kukich</surname>
          </string-name>
          ,
          <article-title>Techniques for Automatically Correcting Words in Text</article-title>
          ,
          <source>ACM Comput. Surv</source>
          .
          <volume>24</volume>
          (
          <year>1992</year>
          )
          <fpage>377</fpage>
          -
          <lpage>439</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>F. A.</given-names>
            <surname>Pirinen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Lindén</surname>
          </string-name>
          ,
          <article-title>State-of-the-Art in Weighted Finite-State Spell-Checking</article-title>
          ,
          <source>in: Proceedings of CICLing</source>
          ,
          <year>2014</year>
          , pp.
          <fpage>519</fpage>
          -
          <lpage>532</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>F.</given-names>
            <surname>Ahmad</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Kondrak</surname>
          </string-name>
          ,
          <article-title>Learning a Spelling Error Model from Search Query Logs</article-title>
          ,
          <source>in: Proceedings of HLT/EMNLP</source>
          ,
          <year>2005</year>
          , pp.
          <fpage>955</fpage>
          -
          <lpage>962</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Zhu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhang</surname>
          </string-name>
          , M. Zhou,
          <article-title>Exploring Distributional Similarity Based Models for Query Spelling Correction</article-title>
          ,
          <source>in: Proceedings of ACL</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>F.</given-names>
            <surname>Ahmed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. W. D.</given-names>
            <surname>Luca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Nürnberger</surname>
          </string-name>
          ,
          <article-title>Revised N-Gram based Automatic Spelling Correction Tool to Improve Retrieval Efectiveness</article-title>
          ,
          <source>Polibits</source>
          <volume>40</volume>
          (
          <year>2009</year>
          )
          <fpage>39</fpage>
          -
          <lpage>48</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>H.</given-names>
            <surname>Duan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Zhai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Roth</surname>
          </string-name>
          ,
          <article-title>A Discriminative Model for Query Spelling Correction with Latent Structural SVM</article-title>
          ,
          <source>in: Proceedings of EMNLP</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>1511</fpage>
          -
          <lpage>1521</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>G.</given-names>
            <surname>Sidiropoulos</surname>
          </string-name>
          , E. Kanoulas,
          <article-title>Analysing the Robustness of Dual Encoders for Dense Retrieval Against Misspellings</article-title>
          ,
          <source>in: Proceedings of SIGIR</source>
          ,
          <year>2022</year>
          , pp.
          <fpage>2132</fpage>
          -
          <lpage>2136</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>