[Algoritmo] [PLN#6] Pré-processamento: Remoção de símbolos
Como já discutimos no artigo anterior sobre a remoção de stopwords, outra vertente que é bastante útil parra o Processamento de Linguagem Natural é a remoção de símbolos.
Sabemos que em muitas línguas a pontuação pode ter funções essenciais para compreensão do texto. No entanto, em abordagens de PLN a pontuação é encarada como um caracter assim como uma letra. Sendo assim, ela pode ser considerada em alguns contextos como "lixo".
É bastante comum termos de remover estes caracteres, a seguir iremos mostrar um algoritmo em Java que utiliza uma lista de caracteres para remove-los de um corpus específico.
import Modules.PreProcessing.Interfaces.SymbolsRemover;
import Util.LoadFiles;
import Util.Paths;
import Util.StringUtils;
import java.util.ArrayList;
public class SymbolsRemoveUsingLists implements SymbolsRemover{
private String pathToSymbolsList;
@Override
public String removeSymbols(String words) {
if(pathToSymbolsList == null
|| pathToSymbolsList.isEmpty()){
throw new InvalidPathException();
}
ArrayList<String> symbols =
LoadFiles.loadSingleFile(pathToSymbolsList);
ArrayList<String> retorno;
symbols.toString();
for(String sy: symbols){
if(words.contains(sy))
words = words.replace(sy, "");
}
retorno = StringUtils.stringToArrayOfWords(words);
ArrayList<String> r = new ArrayList<>();
for(String a: retorno){
if(a.length() > 1){
r.add(a);
}
}
return StringUtils.arrayOfWordsToString(r);
}
public String getPathToSymbolsList() {
return pathToSymbolsList;
}
public void setPathToSymbolsList(String pathToSymbolsList) {
this.pathToSymbolsList = pathToSymbolsList;
}
}
As demais classes relacionadas neste código pode ser encontrada em nosso github. Clique na imagem abaixo para acessar este e outras ferramentas de PLN.
Post a Comment