Funciones para palabras clave.
Funciones
Text KeyWord(Set valSet, Real minChr, Real a2zOrd, Real maxKey)//////////////////////////////////////////////////////////////////////////////
Text KeyWord(Set valSet, // Set of texts
Real minChr, // Minimum number of chars
Real a2zOrd, // If true ordered
Real maxKey) // Maximun number of keywords
//////////////////////////////////////////////////////////////////////////////
{
Text allTxt = ToLower(F(valSet)); // Todo a texto
Text fixWit = Replace(allTxt, " ", " "); // Unico &xxx; que respeta
Text notHtm = TxtOutHtmTag(fixWit); // Fuera de html y scripts, sin &xxx;
Text clsTxt = Compact(ReplaceTable(notHtm,
[[ [[Char(34), " "]], [["'", " "]],
[["." , " "]], [[":", " "]],
[[";", " "]], [[",", " "]],
[["[", " "]], [["]", " "]],
[["(", " "]], [[")", " "]],
[["«", " "]], [["»", " "]],
[["¡", " "]], [["!", " "]],
[["¿", " "]], [["?", " "]],
[["/", " "]], [["\\", " "]]
]]));
Set setTxt = Tokenizer(clsTxt, " "); // Romper por palabras
// Selecciona palabras con mas de minChr caracteres
Set setSel = Select(setTxt, Real(Text oneWrd)
{ GT(TextLength(oneWrd), minChr) });
// Clasificar por palabras
Set setCla = Classify(setSel, Real(Text a, Text b) { Compare(a,b) });
// Tabla de frecuencias [palabra, ocurrencias]
Set tabFrq = EvalSet(setCla, Set(Set oneCla)
{ [[ oneCla[1], Card(oneCla) ]] });
// Ordenar por ocurrencia de mas a menos
Set srtFrq = Sort(tabFrq, Real(Set a, Set b)
{ Compare(Real(b[2]), Real(a[2])) });
// Proyectar por la columna de palabras que es la primera
Set keySet = EvalSet(srtFrq, Text(Set wrdFrq) { wrdFrq[1] });
Set keyMin = keySet - // Palabras comunes a retirar
[[
"además",
"ambos", "ambas",
"aunque",
"cualquier", "cualquiera",
"cuando", "cuándo",
"deberá",
"desde",
"dentro",
"entre",
"esta", "estas", "esto", "estos",
"junto",
"mismo", "mismos", "misma", "mismas",
"mucho", "muchos", "mucha", "muchas",
"ningún", "ninguna",
"nosotros", "nosotras",
"nuestro", "nuestros", "nuestra", "nuestras",
"otra", "otras", "otro", "otros",
"parte",
"porque",
"puede", "pueden", "pudiendo",
"quienes",
"siempre",
"siguiente", "siguientes",
"sobre",
"sumamente",
"también",
"tanto",
"través",
"zulú"
]];
// Seleccionar las maxKey palabras o todas si maxKey == 0
Set keyFst = If(maxKey, SetFirstN(keyMin, maxKey), keyMin);
// Ordenar alfabeticamente si se necesita
Set keySor = If(!a2zOrd, keyFst, Sort(keyFst, Real(Text a, Text b)
{ Compare(a,b) }));
// Convertir a texto separado por comas
ReplaceTable(F(keySor), [[ [["[", ""]], [["]", ""]], [["|", ", "]] ]])
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna un texto formado por una lista de palabras separadas por comas.
Selecciona las maxKey palabras mas frecuentes de un conjunto de textos u
otros valores que intenta convertir a texto.
Las palabras mas frecuentes las ordena alfabeticamente si a2zOrd.
Retira todas las palabras que no superen la longitud minChr y todas las que
aparecen en una tabla interna de palabras comunes.",
KeyWord);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// FILE : key.tol
// AUTHOR : http://www.asolver.com
// PURPOSE : Funciones para palabras clave.
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// FUNCTIONS
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text KeyWord(Set valSet, // Set of texts
Real minChr, // Minimum number of chars
Real a2zOrd, // If true ordered
Real maxKey) // Maximun number of keywords
//////////////////////////////////////////////////////////////////////////////
{
Text allTxt = ToLower(F(valSet)); // Todo a texto
Text fixWit = Replace(allTxt, " ", " "); // Unico &xxx; que respeta
Text notHtm = TxtOutHtmTag(fixWit); // Fuera de html y scripts, sin &xxx;
Text clsTxt = Compact(ReplaceTable(notHtm,
[[ [[Char(34), " "]], [["'", " "]],
[["." , " "]], [[":", " "]],
[[";", " "]], [[",", " "]],
[["[", " "]], [["]", " "]],
[["(", " "]], [[")", " "]],
[["«", " "]], [["»", " "]],
[["¡", " "]], [["!", " "]],
[["¿", " "]], [["?", " "]],
[["/", " "]], [["\\", " "]]
]]));
Set setTxt = Tokenizer(clsTxt, " "); // Romper por palabras
// Selecciona palabras con mas de minChr caracteres
Set setSel = Select(setTxt, Real(Text oneWrd)
{ GT(TextLength(oneWrd), minChr) });
// Clasificar por palabras
Set setCla = Classify(setSel, Real(Text a, Text b) { Compare(a,b) });
// Tabla de frecuencias [palabra, ocurrencias]
Set tabFrq = EvalSet(setCla, Set(Set oneCla)
{ [[ oneCla[1], Card(oneCla) ]] });
// Ordenar por ocurrencia de mas a menos
Set srtFrq = Sort(tabFrq, Real(Set a, Set b)
{ Compare(Real(b[2]), Real(a[2])) });
// Proyectar por la columna de palabras que es la primera
Set keySet = EvalSet(srtFrq, Text(Set wrdFrq) { wrdFrq[1] });
Set keyMin = keySet - // Palabras comunes a retirar
[[
"además",
"ambos", "ambas",
"aunque",
"cualquier", "cualquiera",
"cuando", "cuándo",
"deberá",
"desde",
"dentro",
"entre",
"esta", "estas", "esto", "estos",
"junto",
"mismo", "mismos", "misma", "mismas",
"mucho", "muchos", "mucha", "muchas",
"ningún", "ninguna",
"nosotros", "nosotras",
"nuestro", "nuestros", "nuestra", "nuestras",
"otra", "otras", "otro", "otros",
"parte",
"porque",
"puede", "pueden", "pudiendo",
"quienes",
"siempre",
"siguiente", "siguientes",
"sobre",
"sumamente",
"también",
"tanto",
"través",
"zulú"
]];
// Seleccionar las maxKey palabras o todas si maxKey == 0
Set keyFst = If(maxKey, SetFirstN(keyMin, maxKey), keyMin);
// Ordenar alfabeticamente si se necesita
Set keySor = If(!a2zOrd, keyFst, Sort(keyFst, Real(Text a, Text b)
{ Compare(a,b) }));
// Convertir a texto separado por comas
ReplaceTable(F(keySor), [[ [["[", ""]], [["]", ""]], [["|", ", "]] ]])
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna un texto formado por una lista de palabras separadas por comas.
Selecciona las maxKey palabras mas frecuentes de un conjunto de textos u
otros valores que intenta convertir a texto.
Las palabras mas frecuentes las ordena alfabeticamente si a2zOrd.
Retira todas las palabras que no superen la longitud minChr y todas las que
aparecen en una tabla interna de palabras comunes.",
KeyWord);
//////////////////////////////////////////////////////////////////////////////
Omr.Forms construye las páginas web Html del sitio web omrforms.es
2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio