-
Notifications
You must be signed in to change notification settings - Fork 0
/
corector.h
71 lines (60 loc) · 2.4 KB
/
corector.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#ifndef __CORECTOR_H__
#define __CORECTOR_H__
#pragma once
#include "util.h"
/** Structura utila pentru solutionarea termenilor fara spatii/spatii aiurea
(creata conform descrierii din cerinta pentru tratarea celor 4 cazuri)
*/
struct sol {
string corectie; /**< o posibila corectie a cuvantului. Rezultat final */
int deviatie; /**< abatarea totala minima */
int freq; /**< frecventa totala maxima */
int numar_cuvinte; /**< numar minim de cuvinte */
};
/*! \brief creaza o structura solutie noua cu parametrii dati
* pentru a nu fi nevoie sa fac de fiecare data 4 asocieri.
* \param str cuvant
* \param dev deviatie/abatare
* \param freq frecventa
* \param nr_cuv numar de cuvinte
* \return o struct sol noua cu parametrii de mai sus
*/
sol set_sol(string str, int dev, int freq, int nr_cuv);
/*! \brief Calculeaza distanta de editare cu algoritmul
* Damerau-Levenshtein
* \param s cuvantul care trebuie corectat
* \param it intrarea din dictionar care reprezinta un cuvant valid si
* frecventa acestuia in dictionar
* \return distanta de editare
*/
int Levenshtein_dist(string s, dictionar::iterator it);
/*! \brief Cauta dupa corectii in dictionarul dict ale lui cuvant
* Atunci cand se doreste corectarea unui singur cuvant scris gresit,
* se pot folosi dictionarul si distanta de editare.
* \param cuvant cuvantul care trebuie corectat
* \param dict maparea string-frecventa care reprezinta dictionarul
* \return void
*/
void corecteaza_cuvant(string cuvant, dictionar dict);
/*! \brief Aici se construieste matricea de candidati cu toate proprietatile
* lor. Sub diagonala principala se retin cei care candideaza pentru pozitia
* de solutie valida
* \param input_fara_spatii - Sirul de intrare cu spatiile sterse
* \param len - lungimea sirului de intrare
* \param dict - maparea cuvant-frecventa din dictionar
* \return matricea de candidati
*/
vector < vector<prop> > calculeaza_candidati(string input_fara_spatii,
int len,
dictionar dict);
/*! \brief Calculeaza posibila corectie a stringului de intrare folosind
* rezultatele retinute din calculeaza_candidati
* \param input_fara_spatii - Sirul de intrare cu spatiile sterse
* \param len - lungimea sirului de intrare
* \param dict - maparea cuvant-frecventa din dictionar
* \return Corectura stringului de intrare.
*/
string calculeaza_solutie(string input_fara_spatii,
int len,
dictionar dict);
#endif