Extração de NGram eficiente em CPU e memória com R

Eu escrevi um algoritmo que extrai NGrams (bigramas, trigramas, ... até 5 gramas) de uma lista de 50000 endereços. Meu objetivo é ter para cada endereço um vetor booleano representando se os NGrams estão presentes ou não no endereço. Portanto, cada endereço será caracterizado por um vetor de atributos, e então eu posso realizar um agrupamento nos endereços. O algo funciona assim: começo com os bi-gramas, calculo todas as combinações de (az e 0-9 e / e tabulação): por exemplo: aa, ab, ac, ..., a8, a9, a /, a, ba, bb, ... Então eu executo um loop para cada endereço e extraio para todos os bigrams as informações 0 ou 1 (o grama não está presente ou não está presente). Depois, calculo para os bigramas que mais ocorrem nos trigramas. E assim por diante ... Meu problema é o tempo que o algo leva para executar. Outro problema: R atinge sua capacidade máxima quando há mais de 10000 NGrams. É óbvio porque uma matriz de 50000 * 10000 é enorme. Preciso de suas idéias para otimizar o algo ou alterá-lo. Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion