<!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>Fast Language-Independent Correction of Interconnected Typos to Finding Longest Terms</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Behzad Soleimani Neysiani</string-name>
          <email>B.Soleimani@grad.kashanu.ac.ir</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Seyed Morteza Babamir</string-name>
          <email>Babamir@kashanu.ac.ir</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Software Engineering, Faculty of Computer, &amp; Electrical Engineering, University of Kashan</institution>
          ,
          <addr-line>Kashan, Esfahan</addr-line>
          ,
          <country country="IR">Iran</country>
        </aff>
      </contrib-group>
      <fpage>115</fpage>
      <lpage>120</lpage>
      <abstract>
        <p>- Triagers deal with bug reports in software triage systems like Bugzilla to prioritizing, finding duplicates, and assigning those to developers, which these processes should be automated, especially for substantial open source projects. These bug reports must be mined by text mining, information retrieval, and natural language processing techniques for automation processes. There are many typos in user bug reports which cause low accuracy for artificial intelligence techniques. These typos can be detected based on standard dictionaries, but correction of these typos needs human knowledge based on the context of bug reports. It is essential which neither Google Translator nor Microsoft Office Word can detect interconnected terms -a common type of typos in bug reports- having more than two meaningful terms. This research provides a novel language-independent approach for fast correction of interconnected typos based on natural language processing and human neural network structure to detect and correct interconnected typos - a new tree-based method proposed for term matching. Also, two algorithms proposed for a fast finding the longest meaningful term in an interconnected typo. A dataset is used including 180-kilo typos based on four famous bug report dataset of Android, Eclipse, Mozilla Firefox, and Open Office projects. Then proposed method evaluated on typos versus state of the art. The results show the runtime performance of the proposed method is as same as the related works, but the average length of words is improved and at least more than 57% of typos in the dataset can be classified as interconnected typos.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Keywords— Information Retrieval, Natural Language
Processing, Duplicate Detection, Bug Reports, Typo Correction,
Lexical Interconnected Typo, Trie</p>
      <p>I.</p>
      <p>INTRODUCTION</p>
      <p>
        Many massive projects, especially open source projects have
a large range of analyzers, designers, developers, testers and end
users, which after each new release, all of them may find some
issues or bugs and/or have some suggestions to improve the
software. Software triage systems such as Bugzilla are software
which usually gets these reports online and then the Triagers will
deal with these bug reports to evaluate the importance and
priority of each report, finding duplicate reports based on their
© 2019 for this paper by its authors. Use permitted under Creative
contents, assign bug reports to developers for checking bugs and
planning to modify the project in future [1]. Because of the large
amount and volume of bug reports, many researchers have tried
to automate these processes since 2004 by artificial intelligence
techniques and algorithms[1]. Duplicate bug reports detection is
an essential problem in this research area [2, 3]. The algorithms
and techniques of duplicate bug report detection such as Term
Frequency and Inverse Document Frequency in information
retrieval technique need to check the similarity of two bug
reports to each other word by word, so the lexical correctness of
words and terms is essential for these techniques [
        <xref ref-type="bibr" rid="ref21">4</xref>
        ]. There are
many typos in bug reports, e.g., more than 50% of bug reports
have typos, and more than 2.5% of bug reports have more than
50% typos [
        <xref ref-type="bibr" rid="ref21">4</xref>
        ]. These typos distort similarity detection process
in duplicate detection. It is vital to detect and correct these typos
automatically because there are more than 1.5 million typos [
        <xref ref-type="bibr" rid="ref21">4</xref>
        ]
in Mozilla Firefox, Android, Open Office and Eclipse datasets
[5] and about 390-kilo unique typos in those. A scientific
semidictionary is made for typo detection in bug reports to detect
typos automatically [
        <xref ref-type="bibr" rid="ref21">4</xref>
        ] including general English words and
many scientific words like abbreviations or proper nouns. This
semi-dictionary can be made for every language based on some
valid reference like computer dictionaries or reference websites.
      </p>
      <p>There are many types of typos in texts such as additional,
removal, or substitute characters. Interconnected terms are a
regular typo in the software context because there are many
method or class names in this context which contains
interconnected terms like ‘getItemById’ or ‘printAllMembers’.
Sometimes these words are camel case, and sometimes users
typed them and have not any specific case sensitivity. Also,
sometimes typists forgot to press space between words so there
will be many interconnected terms in the software bug reports or
even other contexts too. Also, it is possible to find some
interconnected typos in optical character recognition (OCR)
output too. These interconnected terms must be separated
otherwise humans and/or computers algorithms, and methods
like term frequency of information retrieval techniques cannot
recognize the text or detect similarities for duplicate bug report
detection problem. The primary purpose of this research is to
figure out how does correct these typos rapidly.</p>
      <p>The organization of the paper is as follows: section 2
explains the literature view
and related
works. Section 3
describes the methodology of interconnected typo correction,
section 4 will discuss evaluation results in experiments, and
section 5 will conclude the research.</p>
      <p>II. LITERATURE REVIEW</p>
      <p>Typo detection and correction is a regular and an ancient
issue in text mining and natural language processing [6, 7].
There are many efforts on typo detection and correction in a
scientific context like clinical records, which uses Shannon’s
noisy channel model to predict next words based on the previous
word sequence [8]. In some case, there is less previous word
sequence like web query, so the log of web query can be used as
a baseline, and maximum entropy model can help for rare
queries to conquer the sparseness problem of prior data [9].</p>
      <p>Some researchers focus on correction of misspelled typos by
different kind
of
machine learning
and
natural language
processing
models, e.g., creating a confusion
matrix for a
different type of misspellings like additional or removal or
transposal or replaced characters to searching these patterns in
terms and predict the correction [10]. Also, phonetic, language,
and keyboard models can be useful for correction prediction by
decision tree as a machine learning based technique [11, 12].
Another approach can be creating a model based on machine
learning techniques to detect typos and predict the correction
according to context and domain knowledge [13, 14]. String
transduction tries to map one string to another and can be used
for misspelled typo corrections too [15]. Also, machine learning
is used in character scale to typo detection and corrections, but
the recall rate is low (about 30%) [16].</p>
      <p>Some other researchers focus on using tree structure for typo
correction. It is possible to make a tree based on a probabilistic
model of the relationship between characters of words which
what characters can become after a particular character and in
advance mode, after a sequence of characters. So, these models
use Bayes theory to make a prediction model on a tree called
Trie and use it for typo correction as the user is typing [17, 18].
The tree structure can be used for grammatical checking and
translating too by merging several grammatical trees in a Trie
[19]. The simple Trie (without probability) is used for spell
checking too [20]. The acyclic deterministic finite automata is a
graph with a similar structure which can be used for spell
checking and typo correction [21]. There are some methods for
query in Trie by wild characters, too [22]. Trie-based index
structure can be used for real-time interaction like search
recommendation and query completion [23].</p>
      <p>The interconnected terms problem was not significant a lot
in other contexts, and there is no specific method for correction
of interconnected terms. As it was tested, the google translate,
and Microsoft office word can detect two parts interconnected
terms and suggest a correction for them, but if there are more
than two meaningful terms, they cannot detect and suggest any
correction. It shows that even huge companies have not been
investigated
algorithm</p>
      <p>with this problem. So, a divide and conquer
based on the</p>
      <p>most extended common sequence
algorithm have been made, as shown in Fig. 1 to find meaningful
terms in an interconnected term. It is a simple brute force
algorithm which will consider all combinations of start and end
index of a substring in interconnected term to find a meaningful
term. Meaningfully checking needs a dictionary. Luckily an
excellent trustful dictionary for computer context have been
made in past research [24] and can be used for this purpose too.</p>
      <p>Checking a word in the dictionary usually is a daily
operation, especially in meaningful word detection; so the time
complexity of this process is significant. Usually, dictionaries
sort their terms to use the binary search with log2 (N) time
complexity for term checking which N is the number of terms in
the dictionary. Also, every word needs to be compared with a
suspicious meaningful word which complexity of this operation
is based on the length of terms even though almost string
comparer method uses short circuit idea for time reduction, in
other words when they find first different character between two
words, and they will cut the comparison operation. So, the
meaningful word detection takes the logarithm (N) operation in
the worst case to find out the result, and it is in the worst case
usually
in this
procedure
because
many substrings are
meaningless and they are not in dictionaries.</p>
      <p>Algorithm: Meaningful Word Finding
Input: a connected term with index of 1 to L
Output: a list of meaningful words with start and end
index in connected term
For I in range of 1 to L</p>
      <p>For J in range of I+1 to L</p>
      <p>If substring of term from I to J is in dictionary</p>
      <p>Put the (I, J, substring) in the output
2) operations equal to n×(n-1)/2 time complexity. Each iteration
needs a dictionary term checking, so the total complexity of this
algorithm is in the equation (1) which N is the number of terms
in dictionaries, L is the average length of each term and n is the
length of the interconnected term. Also, this algorithm can be
parallel easily by dispatching combinations between some
threads or processes, and two threads or processes can be made
at least to parallelize this algorithm, which everyone uses half
combinations.

 ( ,  ,  ) 1 = 

2 ×  ×
 ×( −1)
2
</p>
      <p>Meaningful substring can be everywhere in interconnected
term and have overlap, e.g. ‘hishe’ can be ‘hi’ and ‘she’ or ‘his’
and ‘he’, so the next step is to find the
meaningfulness
combination between substrings which have no overlap (e.g.
‘his’ and ‘she’ which is not possible according to ‘s’ overlap in
primary interconnected term). This algorithm uses a recursive
depth-first search approach to find all non-overlap combination
shown in Fig. 2. It takes four inputs containing the output list of
the previous algorithm, a start index based on the list of
meaningful words, a list of the selected index in meaningfulness
combination, and the length of the interconnected term. These
parameters are the meaningful words, start search index for next
combinations, considered in the current path of depth search, and
can be considered as a constant in this algorithm respectively.
Also, the output of this algorithm is a list of combination too.
This final list should be evaluated based on the context of
interconnected terms, and the best combination is picked
semantically. This algorithm will consider all combinations of
meaningful words and choose those combinations with no
overlap. So, if there are N words in the meaningful words list,
the time complexity of this algorithm equals 2N, which is
exponential, and it is a non-polynomial problem. It takes a long
time, and it is not suitable for a real-time situation like correction
suggestion as the user is typing in text editors which is very
important; because if the user looks the suggestion and correct
this typo, it is not necessary to evaluate the result combination
semantically by artificial intelligence techniques. It is enough to
sort the output list based on a metric and show the top-10
suggestion to the user; then the user will pick the best one. The
average length of words can be a useful metric because every
much the average length of words be high, the combination
contains the largest meaningful component in interconnected
terms, and the possibility of meaningfulness is more.</p>
      <p>Algorithm: Finding meaningfulness combination
between substrings
Input: MW as a list of meaningful words from 1 to n
indexes, SI as start index of searching in meaningful
words with 0 initial value, SC as selected combination
with empty initial value, LCT as length of connected term
Output: a list of meaningfulness combination of words
If start index is 0</p>
      <p>Consider end point equal to 0
Else</p>
      <p>Consider end point equal to end index in SI-th of MW
If end point equals to LCT</p>
      <p>Return SC
For each index J which start index of J-th of MW equals
to end point</p>
      <p>Consider SCn as new list containing SC plus J as
appended value</p>
      <p>Call this algorithm with MW, J, SCn , LCT …</p>
      <p>and put the result in output list if it is not empty</p>
      <p>In the middle procedure of the process of meaningful word
finding, it has been considered that neural networks of the
human brain look at a word and predict the next letters based on
priors and it seems the human brain uses a tree-like algorithm to
find the correctness of a word. So, a binary like a tree proposed
to be made for meaningful word checking. This process needs
two steps: creating the tree, parsing the tree for checking the
existence of a term in the dictionary. Also after making this tree,
it was found that this tree can be used to find meaningful words
more efficient than brute force algorithm, so in step 3 this tree
should be used for finding the meaningful terms. Then these
meaningful terms should be checked where which one is much
possible in primary interconnected term to be meaningful. Thus,
there are four main steps to separate interconnected terms which
shown in Fig. 3 which every step will be explained in the next
sections with an example.</p>
      <p>Creating NMT</p>
      <p>Detecting
Correct Terms</p>
      <p>Making All</p>
      <p>Possible
Combination</p>
      <p>Evaluating and
Finding Best
Combinations</p>
      <p>Suppose that there is a dictionary with these words: ‘hello’,
‘book’, ‘help’, ‘his’, ‘hiss’, ‘she’. Also,
‘hellohelphissbookhishel’ is considered as multiple
interconnected terms with a typo in the last term. Now the
process of neural-like tree making will be explained for
matching the input terms which this tree has called a neural
matching tree (NMT).
1.1</p>
    </sec>
    <sec id="sec-2">
      <title>Neural Matching Tree Creation Process</title>
      <p>This tree is like the binary tree, but it has more than two
children, so it is an n-ary like a tree. It has a root, and every word
in the dictionary will have appeared as a path below of the root.
Every letter in words will be put in a node in the tree. Also, every
node will contain a flag for showing the end of the word, and if
a node contains a letter which is the end of a word, the flag will
be true; otherwise it will be false. Every node can be
implemented by a map or dictionary data structure in
programming languages. So, for the supposed example, this tree
will be like the Fig. 4. In this tree, the flag of end letter of every
word is T (true) and has different color.</p>
      <p>Root
/ F
b / F
h / F</p>
      <p>s / F
o / F
e / F
i / F</p>
      <p>h / F
o / F
l / F
s / T
e / T
k / T
l / F
p / T</p>
      <p>s / T
o / T</p>
      <p>It is interesting that a path can have multiple final nodes, for
example, both words ‘his’ and ‘hiss’ have the same prefix and
in this tree, have the same path. It should be mentioned that this
neural matching tree, can compress the dictionary too. The
human mind is like this tree as to when we look at a word, some
path in our brain will be activated and we can predict next letters.
The procedure of creating NMT is explained in Fig. 5. This
algorithm takes a list of words of a dictionary and returns the
root node for NMT. This procedure is very simple and for every
word, parse the tree once time from the root node and check the
child nodes to have the letters of a word, otherwise create a child
node for each letter as shown in Fig. 3. Also, for the last node,
which contains the last letter of a word, the flag must be true to
show the end of a word.</p>
      <p>Algorithm: Creating Neural Match Tree
Input: a list of words in a dictionary
Output: a root node to a neural match tree
Create a Root node containing no letter with false flag
as end character
For each word in words list of dictionary</p>
      <p>Consider n as a node pointed to Root node
For each letter in word</p>
      <p>If letter is not in child node of n</p>
      <p>Create a child node for n with
letter and false flag</p>
      <p>Consider child node containing the letter as new n
Put true flag for node n (the last one)
Fig. 5. Algorithm of creating neural match tree</p>
      <p>Time and memory complexity of NMT are essential too. As
explained before, the NMT memory is less than a simple
dictionary, and it can be used for compression too. Also, the
creation procedure of NMT need a parse on the whole dictionary
just one time, so it depends on the number of words in the
dictionary and the length of each word. If every word has an
average length of L and there are N words in the dictionary (as
denoted before), the time complexity will be N×L.
1.2</p>
    </sec>
    <sec id="sec-3">
      <title>Neural Matching Tree Using Process</title>
      <p>The next step is to use the NMT for checking a new term is
valid or not; in other words, is it in the dictionary or not. This
procedure is like the NMT creation process, which had described
in Fig. 6. It will check every letter of the suspicious term is in
NMT or not. If the first letter is in child nodes of the root node,
then the next letter will check with the child node of that selected
child node. Unlike the checking process in regular dictionaries,
which has Log2(N)×L time complexity, this process has L time
complexity.
1.3</p>
      <p>Finding Meaningful Words in an Interconnected
Term by Neural Matching Term</p>
      <p>Now, it is time to do the main procedure instead of the brute
force algorithm in Fig. 1. The first loop step of brute force
algorithm cannot be connivance because there may be some
lexical mistake in interconnected term and some substring is
useless, so every substring maybe meaningful.</p>
      <p>Algorithm: Checking the existence of word in NMT as a
dictionary
Input: a Root node for NMT and a term for checking
Output: a Boolean value indicating the existence of the …
word in the NMT
Consider n as a node pointed to Root node
For each letter in word</p>
      <p>If letter is not in child node of n</p>
      <p>Return False</p>
      <p>Consider child node containing the letter as new n
Return True</p>
      <p>The second loop in the brute force algorithm can be more
intelligence based on NMT by cutting the searching existence of
substring as soon as finding a letter is that substring is not in the
next node of NMT. The algorithm of finding meaningful words
in interconnected term by NMT is shown in Fig. 7. The time
complexity of searching in NMT is less than regular dictionaries.
So, the time complexity of this algorithm will be L×L.</p>
      <p>Algorithm: Finding Meaningful Words of a Connected
Term by NMT
Input: Root of NMT and a Connected Term with index of 1
to L
Output: the list of meaningful substring of connected term
An empty list for connected terms as output
For I in range of 1 to L</p>
      <p>J = I
Consider n as a node pointed to Root node
While J &lt;= L</p>
      <p>If n has a final flag (is the last letter of a word)</p>
      <p>Put substring of connected term from I to J …</p>
      <p>index into output list
If letter is not in child node of n</p>
      <p>Break out from while loop</p>
      <p>Consider child node containing the letter as new n</p>
      <p>As mentioned before, the recursive algorithm of finding
meaningfulness combinations has high time complexity, so, a
new iteration based algorithm has created for this purpose, as
shown in Fig. 8. There is a new input in this algorithm to limit
the search based on average word length metric as mentioned
and select just top combination with most ranks. This algorithm
needs a priority queue which can be implemented by heap
algorithm as heap queue to contain every combination with its
rank. Every time this algorithm chooses the highest rank
combination. If this combination is completed and considered all
non-overlap words, the combination will be added to the output
list. Otherwise, it will be progressed to choose the next word and
add to its combination, and calculate the rank again based on the
new combination. This algorithm sort the non-overlap
combination by the length of them descending and then choose
combination as noted in the algorithm by underline. It causes the
longest combination of chose. The time complexity of this
algorithm depends on several words in a combination and
parameter N which in the worst case if every letter of the
interconnected term has considered as a meaningful word, the
time complexity of this algorithm will be LCT×N and it is
polynomial.</p>
      <p>Algorithm: Finding meaningfulness combination between
substrings by NMT
Input: MW as a list of meaningful words from 1 to n
indexes, LCT as length of connected term, N as number of
top most meaningfulness combination
Output: a list of meaningfulness combination of words
Consider LS as a list of search states …
with a combination containing 0 as index of selected …
words with 0 rank
While LS is not empty and has not N output</p>
      <p>Pop highest rank combination in LS as HRC
Choose last index of combination in HRC as end point
For each index J which start index of J-th of MW …
equals to end point Sorted by J descending</p>
      <p>Consider HRCn as new combination containing …
HRC combination plus J as appended value …
and calculate rank based on HRCn</p>
      <p>If the end point of J-th of MW equals to LCT</p>
      <p>Put the combination of HRCn in output list
Else</p>
      <p>Put HRCn in LS</p>
      <p>
        The new scientific semi dictionary as word list and unique
typo dataset of bug reports have picked for evaluating proposed
algorithms [
        <xref ref-type="bibr" rid="ref21">4</xref>
        ]. The implementation of proposed algorithms
done in Python 3.6 programming language and a Core i5 1.8
GHz computer with 12GB memory having windows 8.1 x64. In
the first step, the dataset has analyzed, and it was denoted that it
has 391,807 suspicious typos, but it was detected that 149,749
typos are numeric values which are hexadecimal or have
semihexadecimal form. Also, some of them was newly devised
words, and some others have another type of typos. So the terms
with length of more than five characters have been choosing for
evaluating proposed algorithms which contain 182,402 terms.
The evaluation designed to test algorithms based on selected
typos of a dataset containing interconnected terms and
considering the scientific semi dictionary. Also, two algorithms
considered for finding meaningfulness combination between
substrings by NMT based on [24] as Algorithm 1 (Alg.1) and
new proposed algorithm Fig. 8. As Algorithm 2 (Alg.2). The
results of the number of detected terms based on the average
word length per character of detected terms are shown in Fig. 9
using a logarithmic scale in base two.
      </p>
      <p>AVERAGE WORD LENGTH</p>
      <p>Alg. 1</p>
      <p>Alg. 2
Fig. 9. Average Word Length of Detected Terms versus Alg.1 [24]
The detail of Fig.9 is tabulated in Table 1. As it is evident in this table,
the number of detected terms with lower length is less than the higher
length, and it is because the new proposed algorithm chooses the
longest combination which is more relevant based on our observations.</p>
      <p>This research focuses on the correction of interconnected
terms typos by natural language processing based on a reliable
word list like a formal dictionary to build an n-ary tree inspired
from human neural network to recall the memory. This tree was
called Neural Matching Tree (NMT), which is created based on
the word list. Then the interconnected term will be parsed based
on NMT, and the meaningful substrings in interconnected term
will be extracted. Then non-overlap combinations of meaningful
substrings had picked as correction output words. The proposed
algorithms are elementary, and their time complexity is
negligible. Another achievement of this research is showing that
there are many interconnected terms in the software context,
especially bug reports. So the correction of interconnected typos
can be useful for other goals like duplicate bug report detection
which use information retrieval techniques like term frequency
that use the lexical form of words and depends on having
nontypo in bug reports.</p>
      <p>In the next step, any improvements can be used for
meaningfulness combination extraction process to achieve the
best one between other combinations and also based on the main
context. Also, other metrics can be introduced for this purpose
instead of the average length of words, which this research had
introduced and had used.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <given-names>B. Soleimani</given-names>
            <surname>Neysiani</surname>
          </string-name>
          and
          <string-name>
            <given-names>S. M.</given-names>
            <surname>Babamir</surname>
          </string-name>
          ,
          <article-title>"Methods of Feature Extraction for Detecting the Duplicate Bug Reports in Software Triage Systems,"</article-title>
          <source>presented at the International Conference on Information Technology, Communications and Telecommunications (IRICT)</source>
          , Tehran, Iran,
          <year>2016</year>
          ,
          <year>2016</year>
          . Available: http://www.sid.ir/En/Seminar/ViewPaper.aspx?ID=7 677
          <string-name>
            <given-names>B.</given-names>
            <surname>Soleimani Neysiani</surname>
          </string-name>
          and
          <string-name>
            <given-names>S. M.</given-names>
            <surname>Babamir</surname>
          </string-name>
          ,
          <article-title>"Improving Performance of Automatic Duplicate Bug Reports Detection Using Longest Common Sequence,"</article-title>
          <source>in IEEE 5th International Conference on Knowledge-Based Engineering and Innovation (KBEI)</source>
          , Tehran, Iran,
          <year>2019</year>
          , vol.
          <volume>5</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <given-names>B. Soleimani</given-names>
            <surname>Neysiani</surname>
          </string-name>
          and
          <string-name>
            <given-names>S. M.</given-names>
            <surname>Babamir</surname>
          </string-name>
          ,
          <article-title>"New Methodology of Contextual Features Usage in Duplicate Bug Reports Detection,"</article-title>
          <source>in IEEE 5th International Conference on Web Research (ICWR)</source>
          , Tehran, Iran,
          <year>2019</year>
          , vol.
          <volume>5</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>B. Soleimani</given-names>
            <surname>Neysiani</surname>
          </string-name>
          and
          <string-name>
            <given-names>S. M.</given-names>
            <surname>Babamir</surname>
          </string-name>
          ,
          <article-title>"Automatic Typos Detection in Bug Reports,"</article-title>
          <source>presented at the IEEE 12th International Conference Application of Information and Communication Technologies</source>
          , Kazakhstan,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Aggarwal.</surname>
          </string-name>
          (
          <year>2013</year>
          ).
          <article-title>Bug Reports Dataset</article-title>
          . Available: https://github.com/kaggarwal/Dedup L.
          <string-name>
            <surname>Zhuang</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Jing</surname>
            , and
            <given-names>X.-Y.</given-names>
          </string-name>
          <string-name>
            <surname>Zhu</surname>
          </string-name>
          ,
          <article-title>"Movie review mining and summarization,"</article-title>
          <source>in Proceedings of the 15th ACM international conference on Information and knowledge management</source>
          ,
          <year>2006</year>
          , pp.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          43-
          <fpage>50</fpage>
          : ACM.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <given-names>K.</given-names>
            <surname>Kukich</surname>
          </string-name>
          ,
          <article-title>"Techniques for automatically correcting words in text," Acm Computing Surveys (CSUR)</article-title>
          , vol.
          <volume>24</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>377</fpage>
          -
          <lpage>439</lpage>
          ,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <surname>K. H. Lai</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Topaz</surname>
            ,
            <given-names>F. R.</given-names>
          </string-name>
          <string-name>
            <surname>Goss</surname>
            , and
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Zhou</surname>
          </string-name>
          ,
          <article-title>"Automated misspelling detection and correction in clinical free-text records,"</article-title>
          <source>Journal of biomedical informatics</source>
          , vol.
          <volume>55</volume>
          , pp.
          <fpage>188</fpage>
          -
          <lpage>195</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <given-names>Q.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Li</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <article-title>"Improving query spelling correction using web search results,"</article-title>
          <source>in Proceedings of the 2007 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning (EMNLP-CoNLL)</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>H. M. Noaman</surname>
            ,
            <given-names>S. S.</given-names>
          </string-name>
          <string-name>
            <surname>Sarhan</surname>
            , and
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Rashwan</surname>
          </string-name>
          ,
          <article-title>"Automatic Arabic spelling errors detection and correction based on confusion matrixnoisy channel hybrid system,"</article-title>
          <source>Egypt Comput Sci J</source>
          , vol.
          <volume>40</volume>
          , no.
          <issue>2</issue>
          , p.
          <year>2016</year>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <given-names>G. A. d. M.</given-names>
            <surname>Almeida</surname>
          </string-name>
          ,
          <article-title>"Using phonetic knowledge in tools and resources for Natural Language Processing and Pronunciation Evaluation,"</article-title>
          <string-name>
            <surname>Master</surname>
          </string-name>
          ,
          <string-name>
            <surname>Universidade de São Paulo</surname>
          </string-name>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <surname>Fonseca</surname>
            ,
            <given-names>M. d. G. V.</given-names>
          </string-name>
          <string-name>
            <surname>Nunes</surname>
            , and
            <given-names>S. M.</given-names>
          </string-name>
          <string-name>
            <surname>Aluísio</surname>
          </string-name>
          ,
          <article-title>"Evaluating phonetic spellers for user-generated content in brazilian portuguese,"</article-title>
          <source>in International Conference on Computational Processing of the Portuguese Language</source>
          ,
          <year>2016</year>
          , pp.
          <fpage>361</fpage>
          -
          <lpage>373</lpage>
          : Springer.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <given-names>Y.</given-names>
            <surname>Huang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y. L.</given-names>
            <surname>Murphey</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Ge</surname>
          </string-name>
          ,
          <article-title>"Intelligent typo correction for text mining through machine learning,"</article-title>
          <source>International Journal of Knowledge Engineering and Data Mining</source>
          , vol.
          <volume>3</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>115</fpage>
          -
          <lpage>142</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <string-name>
            <given-names>Y.</given-names>
            <surname>Huang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y. L.</given-names>
            <surname>Murphey</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Ge</surname>
          </string-name>
          ,
          <article-title>"Automotive diagnosis typo correction using domain knowledge and machine learning,"</article-title>
          <source>in IEEE Symposium on Computational Intelligence and Data Mining (CIDM)</source>
          ,
          <year>2013</year>
          , pp.
          <fpage>267</fpage>
          -
          <lpage>274</lpage>
          : IEEE.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          <string-name>
            <given-names>J.</given-names>
            <surname>Ribeiro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Narayan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. B.</given-names>
            <surname>Cohen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>X.</given-names>
            <surname>Carreras</surname>
          </string-name>
          ,
          <article-title>"Local String Transduction as Sequence Labeling,"</article-title>
          <source>in Proceedings of the 27th International Conference on Computational Linguistics</source>
          ,
          <year>2018</year>
          , pp.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <string-name>
            <given-names>M.</given-names>
            <surname>Korpusik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Collins</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Glass</surname>
          </string-name>
          ,
          <article-title>"Character-based embedding models and reranking strategies for understanding natural language meal descriptions,"</article-title>
          <source>Proc. Interspeech</source>
          , pp.
          <fpage>3320</fpage>
          -
          <lpage>3324</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          <string-name>
            <given-names>H.</given-names>
            <surname>Duan</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.-J. P.</given-names>
            <surname>Hsu</surname>
          </string-name>
          ,
          <article-title>"Online spelling correction for query completion,"</article-title>
          <source>in Proceedings of the 20th international conference on World wide web</source>
          ,
          <year>2011</year>
          , pp.
          <fpage>117</fpage>
          -
          <lpage>126</lpage>
          : ACM.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <string-name>
            <surname>B.-J. Hsu</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Wang</surname>
            , and
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Duan</surname>
          </string-name>
          ,
          <article-title>"Online spelling correction/phrase completion system,"</article-title>
          <source>ed: Google Patents</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          <string-name>
            <given-names>K.</given-names>
            <surname>Oflazer</surname>
          </string-name>
          ,
          <article-title>"Error-tolerant tree matching,"</article-title>
          <source>in Proceedings of the 16th conference on Computational linguistics-Volume</source>
          <volume>2</volume>
          ,
          <year>1996</year>
          , pp.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          860-
          <fpage>864</fpage>
          :
          <article-title>Association for Computational Linguistics</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          <string-name>
            <given-names>H.</given-names>
            <surname>Shang</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Merrettal</surname>
          </string-name>
          ,
          <article-title>"Tries for approximate string matching,"</article-title>
          <source>IEEE Transactions on Knowledge and Data Engineering</source>
          , vol.
          <volume>8</volume>
          , no.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          4, pp.
          <fpage>540</fpage>
          -
          <lpage>547</lpage>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          <string-name>
            <given-names>S.</given-names>
            <surname>Deorowicz</surname>
          </string-name>
          and
          <string-name>
            <given-names>M. G.</given-names>
            <surname>Ciura</surname>
          </string-name>
          ,
          <article-title>"Correcting spelling errors by modeling their causes,"</article-title>
          <source>International journal of applied mathematics and computer science</source>
          , vol.
          <volume>15</volume>
          , pp.
          <fpage>275</fpage>
          -
          <lpage>285</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          <string-name>
            <given-names>N.</given-names>
            <surname>Ito</surname>
          </string-name>
          ,
          <article-title>"Character-string retrieval system and method,"</article-title>
          <source>ed: Google Patents</source>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          <string-name>
            <given-names>P.</given-names>
            <surname>Fafalios</surname>
          </string-name>
          and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Tzitzikas</surname>
          </string-name>
          ,
          <article-title>"Type-Ahead Exploratory Search through Typo and Word Order Tolerant Autocompletion,"</article-title>
          <string-name>
            <given-names>J. Web</given-names>
            <surname>Eng</surname>
          </string-name>
          ., vol.
          <volume>14</volume>
          , no.
          <issue>1</issue>
          &amp;
          <issue>2</issue>
          , pp.
          <fpage>80</fpage>
          -
          <lpage>116</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          <string-name>
            <given-names>B. Soleimani</given-names>
            <surname>Neysiani</surname>
          </string-name>
          and
          <string-name>
            <given-names>S. M.</given-names>
            <surname>Babamir</surname>
          </string-name>
          ,
          <article-title>"</article-title>
          <source>Automatic Interconnected Lexical Typo Correction in Bug Reports of Software Triage Systems," presented at the International Conference on Contemporary Issues in Data Science</source>
          , Zanjan, Iran,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          <string-name>
            <surname>Napoli</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tramontana</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sciuto</surname>
            ,
            <given-names>G. L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wozniak</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Damaevicius</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Borowik</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          (
          <year>2015</year>
          ,
          <article-title>July)</article-title>
          .
          <article-title>Authorship semantical identification using holomorphic Chebyshev projectors</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          <source>In 2015 Asia-Pacific Conference on Computer Aided System Engineering</source>
          (pp.
          <fpage>232</fpage>
          -
          <lpage>237</lpage>
          ). IEEE.
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          <string-name>
            <surname>Venckauskas</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karpavicius</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Damaševičius</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marcinkevičius</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kapočiūte-Dzikiené</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Napoli</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          (
          <year>2017</year>
          ,
          <article-title>September)</article-title>
          .
          <article-title>Open class authorship attribution of lithuanian internet comments using one-class classifier</article-title>
          .
          <source>In 2017 Federated Conference on Computer Science and Information Systems (FedCSIS)</source>
          (pp.
          <fpage>373</fpage>
          -
          <lpage>382</lpage>
          ). IEEE.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>