Documentation ¶
Index ¶
- Constants
- func CleanToken(oldToken string) string
- func Extract(query Query, docID int, config *Configuration, index *FrequencyIndex) (string, error)
- func Filter(input io.Reader, output io.Writer) error
- func FilterFile(input string) io.Reader
- func Title(doc string, config *Configuration) (string, error)
- type Configuration
- type DocumentWeight
- type DocumentWeights
- type FrequencyIndex
- func (ind *FrequencyIndex) AddAndCountToken(doc, token string)
- func (ind *FrequencyIndex) AddDocument(doc string) int
- func (ind *FrequencyIndex) AddDocumentWithId(doc string, id int)
- func (ind *FrequencyIndex) AddToken(token string) int
- func (ind *FrequencyIndex) AddTokenWithId(token string, id int)
- func (ind *FrequencyIndex) ComputeAll() *FrequencyIndex
- func (ind *FrequencyIndex) ComputeAverageDocumentLength() *FrequencyIndex
- func (ind *FrequencyIndex) ComputeIdf() *FrequencyIndex
- func (ind *FrequencyIndex) ComputeMaxTokensDoc() *FrequencyIndex
- func (ind *FrequencyIndex) ComputeSimilarityMatrix() SimilarityMatrix
- func (ind *FrequencyIndex) ComputeWeights() *FrequencyIndex
- func (ind *FrequencyIndex) CountToken(idDoc, idToken int)
- func (ind *FrequencyIndex) MarshalXML(e *xml.Encoder, start xml.StartElement) error
- func (ind *FrequencyIndex) NormalizeTf() *FrequencyIndex
- func (ind *FrequencyIndex) NormalizeWeights() *FrequencyIndex
- func (ind *FrequencyIndex) Serialize(file string)
- func (ind *FrequencyIndex) SerializeXML(file string)
- type Query
- type QueryResult
- type SimilarityMatrix
- type Stopper
- type StringIterator
- func (tokens StringIterator) AddToFrequencyIndex(doindex bool, document string, index *FrequencyIndex) *FrequencyIndex
- func (i StringIterator) Evaluate()
- func (i StringIterator) Filter(f func(string) bool) StringIterator
- func (tokens StringIterator) IterateFrequencyIndex(document string, index *FrequencyIndex) *FrequencyIndex
- func (i StringIterator) Next() string
- func (tokens StringIterator) StemmerIterator() StringIterator
- func (tokens StringIterator) StemmerWriterIterator(dostem bool, file string, writeStem bool) StringIterator
- func (tokens StringIterator) StopperIterator(stop Stopper) StringIterator
- func (tokens StringIterator) StopperWriterIterator(dostop bool, file string, writeStop bool, stop Stopper) StringIterator
- func (tokens StringIterator) ToQuery(ind *FrequencyIndex) Query
- type Topic
- type Topics
Constants ¶
const (
//BUFFERSIZE es el tamaño del buffer de los canales
BUFFERSIZE = 16
)
Variables ¶
This section is empty.
Functions ¶
func CleanToken ¶
CleanToken elimina caracteres extraños de un token y normaliza los acentos
func Extract ¶
func Extract(query Query, docID int, config *Configuration, index *FrequencyIndex) (string, error)
Extract extrae de un documento una frase donde aparezca algún término de la consulta
func FilterFile ¶
FilterFile abre el archivo especificado y lo filtra
Types ¶
type Configuration ¶
type Configuration struct { Corpus string Filtered string Tokenized string Stopped string StopperFile string Stemmed string IndexFile string QueryFile string EvalFile string Context int MaxDocuments int //Peso necesario para considerar un documento relevante al calcular el peso okapi Okapi struct { Threshold float64 K1 float64 K3 float64 B float64 } }
Configuration es la estructura en la que guardamos la configuración
func LoadConfiguration ¶
func LoadConfiguration(file string) (*Configuration, error)
LoadConfiguration carga un archivo de configuración
func (*Configuration) Save ¶
func (cfg *Configuration) Save(file string) error
Save guarda la configuración en un archivo
type DocumentWeight ¶
DocumentWeight representa el valor de similitud de un documento con una consulta
type DocumentWeights ¶
type DocumentWeights []DocumentWeight
DocumentWeights representa una lista de similitudes
func (DocumentWeights) GetCi ¶
func (k DocumentWeights) GetCi(ind *FrequencyIndex, thres float64, token int) float64
GetCi devuelve el peso Robertson-Sparck Jones de un término dada una consulta
func (DocumentWeights) Len ¶
func (d DocumentWeights) Len() int
func (DocumentWeights) Less ¶
func (d DocumentWeights) Less(i, j int) bool
func (DocumentWeights) Swap ¶
func (d DocumentWeights) Swap(i, j int)
type FrequencyIndex ¶
type FrequencyIndex struct { //TokenIds guarda el ID de cada token (en forma de string) TokenIds map[string]int //DocIds guarda el ID de cada documento DocIds map[string]int TokenNames map[int]string DocNames map[int]string //NextToken guarda el siguiente número de token que se va a utilizar NextToken int //NextDoc guarda el siguiente número de documento NextDoc int //TokensCount es el índice invertido: //tokens[token][documento] = veces que aparece token en "documento" //En la segunda vuelta esto se divide entre el número máximo de tokens de cada documento //En caso de que no esté, siempre se devolverá 0 //Guardamos esta estructura en caso de que aparezcan nuevos documentos //en la colección, para no tener que reconstruirlo todo desde cero. TokensCount map[int]map[int]float64 //Número de veces que aparece el token que más veces aparece en un documento MaxTokensDoc map[int]int //IDF Idfi map[int]float64 //Pesos Weight map[int]map[int]float64 DocLength map[int]int AvgLength float64 // contains filtered or unexported fields }
FrequencyIndex es donde se almacenan todos los datos relativos al índice de frecuencias
func DeserializeFrequencyIndex ¶
func DeserializeFrequencyIndex(file string) *FrequencyIndex
DeserializeFrequencyIndex carga un índice de frecuencias desde un fichero
func NewFrequencyIndex ¶
func NewFrequencyIndex() *FrequencyIndex
NewFrequencyIndex es el constructor del índice de frecuencias
func (*FrequencyIndex) AddAndCountToken ¶
func (ind *FrequencyIndex) AddAndCountToken(doc, token string)
AddAndCountToken añade el token (si no está) y lo cuenta al documento especificado
func (*FrequencyIndex) AddDocument ¶
func (ind *FrequencyIndex) AddDocument(doc string) int
AddDocument añade (parcialmente) un documento al índice de frecuencias. El cómputo de tokens y demás debe realizarse por separado
func (*FrequencyIndex) AddDocumentWithId ¶
func (ind *FrequencyIndex) AddDocumentWithId(doc string, id int)
AddDocumentWithId añade un documento al índice de frecuencias con el ID dado El cómputo de tokens y demás debe realizarse por separado
func (*FrequencyIndex) AddToken ¶
func (ind *FrequencyIndex) AddToken(token string) int
AddToken añade un token al índice de frecuencias
func (*FrequencyIndex) AddTokenWithId ¶
func (ind *FrequencyIndex) AddTokenWithId(token string, id int)
func (*FrequencyIndex) ComputeAll ¶
func (ind *FrequencyIndex) ComputeAll() *FrequencyIndex
ComputeAll hace los siguientes cálculos: - Tf normalizado (contando la frecuencia máxima de un documento) - Idf de cada token - Peso normalizado
func (*FrequencyIndex) ComputeAverageDocumentLength ¶
func (ind *FrequencyIndex) ComputeAverageDocumentLength() *FrequencyIndex
ComputeAverageDocumentLength calcula la longitud media de los documentos
func (*FrequencyIndex) ComputeIdf ¶
func (ind *FrequencyIndex) ComputeIdf() *FrequencyIndex
ComputeIdf calcula el IDF de cada token
func (*FrequencyIndex) ComputeMaxTokensDoc ¶
func (ind *FrequencyIndex) ComputeMaxTokensDoc() *FrequencyIndex
ComputeMaxTokensDoc calcula el campo de la estructura del mismo nombre.
func (*FrequencyIndex) ComputeSimilarityMatrix ¶
func (ind *FrequencyIndex) ComputeSimilarityMatrix() SimilarityMatrix
ComputeSimilarityMatrix computes a matrix which tells for each document pair how many tokens unique tokens do they have in common. It is supposed to be a triangular matrix, but values are repeated for the percentage computation.
func (*FrequencyIndex) ComputeWeights ¶
func (ind *FrequencyIndex) ComputeWeights() *FrequencyIndex
ComputeWeights calcula el TF*IDF
func (*FrequencyIndex) CountToken ¶
func (ind *FrequencyIndex) CountToken(idDoc, idToken int)
CountToken cuenta un token en el documento indicado
func (*FrequencyIndex) MarshalXML ¶
func (ind *FrequencyIndex) MarshalXML(e *xml.Encoder, start xml.StartElement) error
MarshalXML Exports FrequencyIndex to XML
func (*FrequencyIndex) NormalizeTf ¶
func (ind *FrequencyIndex) NormalizeTf() *FrequencyIndex
NormalizeTf divide los TF entre los MaxTokensDoc
func (*FrequencyIndex) NormalizeWeights ¶
func (ind *FrequencyIndex) NormalizeWeights() *FrequencyIndex
NormalizeWeights normaliza los pesos
func (*FrequencyIndex) Serialize ¶
func (ind *FrequencyIndex) Serialize(file string)
Serialize serializa el índice de frecuencias a un archivo
func (*FrequencyIndex) SerializeXML ¶
func (ind *FrequencyIndex) SerializeXML(file string)
SerializeXML exports the FrequencyIndex to a XML file
type QueryResult ¶
QueryResult es el resultado de realizar una consulta
func GetOkapiWeight ¶
func GetOkapiWeight(q Query, ind *FrequencyIndex, thres float64, k1 float64, k3 float64, b float64) QueryResult
GetOkapiWeight devuelve el peso Okapi BM25 para la consulta dada
func GetQuerySimilarities ¶
func GetQuerySimilarities(q Query, ind *FrequencyIndex) QueryResult
GetQuerySimilarities calcula el valor de similitud para todos los documentos indexados en ind con respecto a la consulta q
func (QueryResult) GetNGreatest ¶
func (qr QueryResult) GetNGreatest() DocumentWeights
GetNGreatest elige los N mejores resultados de una consulta. Utiliza el sort de todos los valores (ineficiente)
type SimilarityMatrix ¶
type SimilarityMatrix struct { Matrix map[int]map[int]float64 Index *FrequencyIndex DocLength int }
SimilarityMatrix is a matrix generated by ComputeSimilarityMatrix. As it is triangular, the lower index must be the first
func (SimilarityMatrix) MarshalXML ¶
func (sm SimilarityMatrix) MarshalXML(e *xml.Encoder, start xml.StartElement) error
MarshalXML exports the matrix to XML
func (SimilarityMatrix) Percentage ¶
func (sm SimilarityMatrix) Percentage()
Percentage normalizes the similarity matrix. Divides each row by the length of the document
func (SimilarityMatrix) Serialize ¶
func (sm SimilarityMatrix) Serialize(file string)
Serialize exports a SimilarityMatrix to a file
type Stopper ¶
Stopper ...
func ReadStopper ¶
ReadStopper carga un stopper desde una entrada
func (Stopper) WriteStopper ¶
WriteStopper guarda el stopper (ya normalizado)
type StringIterator ¶
type StringIterator <-chan string
StringIterator es un iterador genérico de cadenas
func ReadLines ¶
func ReadLines(inputStream io.Reader) StringIterator
ReadLines reads lines from a file and returns a StringIterator
func TokenizerIterator ¶
func TokenizerIterator(input io.Reader) StringIterator
TokenizerIterator devuelve un canal que suelta tokens...
func TokenizerWriterIterator ¶
func TokenizerWriterIterator(input io.Reader, file string, write bool) StringIterator
TokenizerWriterIterator Igual que TokenizerIterator, pero que escribe los tokens en el fichero especificado si write es true
func (StringIterator) AddToFrequencyIndex ¶
func (tokens StringIterator) AddToFrequencyIndex(doindex bool, document string, index *FrequencyIndex) *FrequencyIndex
AddToFrequencyIndex es el iterador de alto nivel, preparado para el main
func (StringIterator) Evaluate ¶
func (i StringIterator) Evaluate()
Evaluate cierra la cadena y evalua todo lo del iterador Básicamente, lo saca todo para forzar las operaciones intermedias
func (StringIterator) Filter ¶
func (i StringIterator) Filter(f func(string) bool) StringIterator
Filter filtra el contenido del iterador dependiendo de la función f
func (StringIterator) IterateFrequencyIndex ¶
func (tokens StringIterator) IterateFrequencyIndex(document string, index *FrequencyIndex) *FrequencyIndex
IterateFrequencyIndex itera sobre un canal de tokens, añadiéndolos al índice de frecuencias en el documento especificado. En este caso, el canal de tokens representa un documento
func (StringIterator) Next ¶
func (i StringIterator) Next() string
Next devuelve el siguiente valor o la cadena vacía en caso de llegar al final
func (StringIterator) StemmerIterator ¶
func (tokens StringIterator) StemmerIterator() StringIterator
StemmerIterator recorre el iterador y devuelve
func (StringIterator) StemmerWriterIterator ¶
func (tokens StringIterator) StemmerWriterIterator(dostem bool, file string, writeStem bool) StringIterator
StemmerWriterIterator escribe los tokens pasados por el stemmer
func (StringIterator) StopperIterator ¶
func (tokens StringIterator) StopperIterator(stop Stopper) StringIterator
StopperIterator devuelve aquellos tokens que no están en el stopper
func (StringIterator) StopperWriterIterator ¶
func (tokens StringIterator) StopperWriterIterator(dostop bool, file string, writeStop bool, stop Stopper) StringIterator
StopperWriterIterator igual que StopperIterator, pero escribe los cambios y se ejecuta opcionalmente
func (StringIterator) ToQuery ¶
func (tokens StringIterator) ToQuery(ind *FrequencyIndex) Query
ToQuery transforma un iterador de cadenas en el formato requerido para una consulta
type Topics ¶
Topics representa el conjunto de consultas del XML
func ReadXMLQueries ¶
func ReadXMLQueries(config *Configuration) Topics
ReadXMLQueries lee las consultas de un fichero XML