the green sea noise
Todos as publicações e opiniões são exclusivamente minhas excepto se indicado o contrário.
Sunday, 20 November 2022
roses are red, poems are sappy...
Friday, 19 June 2020
Introdução à Business Continuity and Disaster Recovery
Os termos business continuity (continuidade do negócio) e disaster recovery (recuperação de desastres) costumam ser utilizados sem distinção, e embora existam alguns elementos em comum, eles não são a mesma coisa.
A continuidade de negócio foca-se na capacidade de uma organização continuar operacional independente da natureza de uma potencial interrupção. O seu planeamento implica uma metodologia formal, que pode ser estudada e pela qual os seus praticantes podem ser certificados.
Recuperação de desastres tipicamente é um subtipo do planeamento de continuidade de negócio pois lida com a mitigação dos efeitos de um evento ou desastre. Estes desastres podem ser naturais, causados intencionalmente por humanos, ou acidentais.
As principais motivações para o planeamento BC/DR são a quantidade de riscos que são toleráveis para uma empresa, e quanto é que uma empresa está disposta a dispender para evitar estes riscos e perturbações.
As empresas são compostas por pessoas, processos, e tecnologias e infraestruturas relacionadas. Cada uma destas componentes, individualmente ou relacionada, tem de ser considerada para o planeamento BC/DR.
As pessoas são responsáveis por criar e implementar os planos BC/DR, e são influenciadas e susceptíveis aos efeitos emocionais, mentais e físicos de um desastre. Os processos são utilizados pelas empresas para manter uma ordem e fluxo consistente das operações de negócio, e deverão ser analisados durante o planeamento para determinar quais são os processos críticos e como deverão ser alterados ou implementados. A tecnologia é implementada através das pessoas e processos, portanto uma visão que integre e considere pessoas, processos e tecnologias é essencial para desenhar um plano de emergência.
Business Continuity versus Disaster Recovery
Business Continuity
O planeamento de continuidade de negócio é uma metodologia utilizada para criar e validar um plano para manter as operações de uma organização em funcionamento contínuo, antes, durante e após um desastre e outras perturbações. Este tipo de metodologia tornou-se de grande importância sobretudo, e como exemplo, após o evento do “Y2K”, em que inúmeras empresas e sistemas falharam após o dia 1 de Janeiro de 2000. Muitas empresas não conseguem tolerar períodos de total inactividade ou downtime – isto inclui empresas de finanças, empresas que processam informação de débito ou cartões de crédito, ou alguns vendedores online de grande escala e volume, estas empresas poderão então decidir que compensa investir num sistema de recuperação e continuidade implementado pois a perda e custo pela inactividade pode chegar aos milhões. Estas empresas requerem também que os planos operacionais gerais reflitam esta prioridade.
O termo “disponibilidade contínua” pode classificar-se como um subconjunto de business continuity, também é conhecido como zero-downtime, e é extremamente dispendioso de implementar.
Os planos de continuidade de negócio baseiam-se em acções de prevenção executadas no dia-a-dia. Estas ações quando postas em prática acabam por ser bastante fáceis de implementar e executar com naturalidade. Estas acções de prevenção podem ser classificadas em três classes gerais: mitigação, evitação e transferência. No contexto da continuidade do negócio e recuperação de desastres:
-
Mitigação é algo realizado com o intuito de reduzir a probabilidade de ocurrência, ou o dano sofrido por um evento inevitável.
-
Evitação é o acto de evitar e manter a distância de um evento.
-
Transferência é o acto de transferir o risco de um evento inevitável ou impossível de controlar para terceiras entidades.
Disaster Recovery
Recuperação de desastres é uma parte da continuidade de negócio, e lida com o impacto imediato de um evento. A recuperação envolvida numa falha de sistema ou de energia, uma fuga de segurança, ou desastres naturais como um furacão pertencem todos a esta categoria. Disaster recovery envolve a paragem o mais rápido possível dos efeitos do desastre, e a conseguinte análise e remediação após o desastre. Isto pode incluir desligar sistemas comprometidos, avaliar que sistemas foram afectados durante um sismo, e determinar a melhor maneira de proceder face às consequências sofridas. A uma certa altura, as actividades de business continuity e disaster recovery sobrepõem-se, não só porque uma crise nunca corre exactamente de acordo com o que foi previamente planeado, e porque são levantadas questões que se relacionam com ambas as categorias e que se focam em conjunto em manter a organização operacional, questões estas como por exemplo, em que localização colocar sistemas temporários, como procurar e substituir sistemas ou partes de sistemas, ou como estabelecer mecanismos de segurança numa nova localização.
Os desastres podem ser distinguidos em três categorias. Desastres naturais, desastres causados por humanos, e acidentes e desastres tecnológicos.
Estes podem ser mínimos e fáceis de antecipar e mitigar, ou moderados a catastróficos, portanto um planeamento eficiente deve considerar estes três tipos de ameaças potenciais. O tsunami da indonésia em 2005 ou o furacão Katrina são alguns dos exemplos que provocaram falhas catastróficas, ambos puderam ser antecipados até um certo limite, através de dados sísmicos debaixo do mar e de dados metereológicos respectivamente, mas ninguém pôde estimar a rapidez e área de efeito do tsunami, ou a duração e impacto do furacão. Por conseguinte, o impacto destes dois acontecimentos foi devastador.
Os desastres causados por humanos, também designados de antropogénicos, podem ser mais diversos em natureza. A maioria são intencionais e vão de terrorismo, bombas, ciberataques, roubos, extorsão, fogos postos, protestos ou manifestações civis, contaminação radioactiva, ou adulteração de produtos.
Os desastres tecnológicos e acidentais estão maioritariamente relacionados com os causados por humanos, mas considerados não intencionais. Estes incluem acidentes e falhas de transportes (um colapso de um túnel ou um acidente numa autoestrada), acidentes e falhas de infraestruturas (falhas de gás, electricidade, água ou barragens).
Componentes de Negócio
Antes de planear o que quer que seja, precisamos de tomar um passo atrás e abstrair-nos do que compõe uma empresa ou organização, e como é que esses elementos se interligam e funcionam na empresa. Podemos distinguir três simples categorias, pessoas, processos e tecnologia.
Pessoas
As pessoas, claramente são responsáveis pelo planeamento e implementação dos planos de continuidade do negócio e recuperação do desastre (ou BC/DR), alguns elementos importantes que deveremos considerar nesta categoria “Pessoas” são os seguintes.
Erros humanos. Erros são cometidos diariamente pelos responsáveis dos processos da empresa. Por muitos sistemas bem implementados e variados, por vezes é uma sequência de más decisões ou erros humanos que pode resultar num evento crítico. Um estudo realizado por um especialista da Ontrack Data International indicou que, comparando aos riscos dos ciberataques por vírus ou outro malware, o erro humano é responsável por 5 vezes mais pela perda de dados ou fugas de segurança.
Outro aspecto a tomar em consideração é a diversidade de respostas que as pessoas podem ter face a um desastre. Desde mobilização à paralização, o stress emocional e físico pode reduzir a eficiência até dos indivíduos mais bem preparados.
Processos
No planeamento BC/DR podemos distinguir duas fases: a de planeamento/preparação, e a de implementação. Os processos que uma empresa utiliza no dia-a-dia são a chave para o sucesso a longo prazo. Estes processos são imediatamente interrompidos no caso de um desastre, e um plano que consiga cobrir várias emergências e desastres, contando também com o stress e respostas das pessoas envolvidas pode fazer a diferença entre a recuperação ou o falhanço e consecutivo encerramento da empresa. Algumas das circunstâncias em consideração podem ser a altura do ano, e a mais importante: o que fazer se um desastre ocorre antes, durante ou depois do processamento dos salários. É importante ter planos dedicados e bem pensados para todos estes casos exemplares.
Tecnologia
À medida que a tecnologia continua a tornar-se cada vez mais integral às operações das corporações a uma escala global em todos os aspectos da organização, o papel dos sistemas de informação e dos seus profissionais expandiu-se para englobar todos estes aspectos. Por conseguinte, esta é a área que mais pode sofrer face a desastres, em termos financeiros. Por exemplo, se após uma emergência forem necessárias uma localização e instalações temporárias, inicialmente é menos dispendioso ter um plano de contingência para este aspecto, do que mais tarde após ou durante uma emergência tentar negociar opções disponíveis, sobretudo se um desastre afectar várias empresas. Outros aspectos a considerar são a localização geográfica dos dados ou bases de dados, e dos sistemas electrónicos, o acesso e segurança/métodos de criptografia em vigor e a existência de ficheiros backup ou réplicas.
Planeamento BC/DR
Um dos fortes benefícios de um plano de BC/DR é como planear nos força a observar criticamente as fraquezas nos processos e ferramentas de negócio e a fortalecê-los antes que um desastre ocorra. A análise implícita no desenvolvimento de um plano vai sempre permitir uma compreensão mais profunda da empresa, e descobrir procedimentos e actividades desnecessárias e ineficientes dentro da organização. Isto adiciona valor estratégico à empresa, pois para além da visão alargada dos procedimentos da empresa, oferece vantagem competitiva.
Um plano incompleto ou deficiente muitas das vezes pode ser pior do que não ter um plano de todo, resultando em penalidades financeiras e legais, e também podendo levar as pessoas a assumir que existem planos de contingência e de emergência em efeito – uma falsa segurança.
Para criar um plano efectivo, que aborde ação e contingência, deveremos questionar-nos e cobrir os seguintes problemas.
-
Quais são os meus activos críticos?
-
Quais os riscos associados aos activos da empresa? Quais são os sistemas e dados que devemos proteger?
-
Como se pode reduzir a probabilidade de uma ameaça ocorrer?
-
Como se pode minimizar os danos no caso de uma ameaça inevitável?
-
O que é que as equipas da empresa deverão fazer quando isto acontece? Que indivíduos, departamentos e equipas são responsáveis?
-
Onde posso encontrar mais informação pertinente às minhas necessidades para desenvolver o plano?
Tendo em consideração as componentes de negócio numa visão abstraída, nomeadamente como pessoas, processos e tecnologias se interrelacionam, podemos então desenvolver um plano BC/DR. Podem ser delineados sete etapas ou passos básicos. A figura abaixo representa a ordem e relação entre as várias etapas.
Início de Projecto
É um dos elementos principais no planeamento BC/DR pois é nesta etapa que se definem os limites sobre o que queremos e podemos fazer. É necessário o suporte e colaboração dos utilizadores da empresa (desde os necessários para implementação como especialistas ou managers experientes, aos não envolvidos) e executivos (financiamento, recursos, staff, cobrimento político e legal) através da comunicação clara, concisa e convincente, realçando a necessidade de uma solução BC/DR. É necessário ter âmbito, objectivos e requisitos bem definidos.
As etapas básicas de um projecto são:
-
definição do projecto
-
formação de equipas (estabelecer managers para as análises de risco, uma equipa para controlo e avaliação de crises e respectivo porta-voz, uma equipa para os danos, uma para respostas de emergência e notificação, um coordenador para a continuidade de negócio, e responsáveis por recursos e logística)
-
organização e planeamento do projecto
-
implementação do projecto
-
monitorização
-
fecho do projecto
Análise de Risco
Corresponde ao processo de identificar, controlar e eliminar ou minimizar eventos incertos ou inesperados que possam afectar uma organização; inclui análise do custo-benefício, e selecção, teste e implementação de estratégias. Em suma, uma análise de risco é suposto estabelecer e analisar todo o tipo de ameaças e os potenciais riscos que uma empresa corre no dia-a-dia. É aqui que se levantam e se tentam solucionar questões e problemas com o apoio, experiência e conhecimento do resto dos indivíduos e departamentos da empresa. É o processo de tentar controlar a incerteza, ou seja,
Risco = ameaça + (probabilidade da ameaça ocorrer + vulnerabilidade) + impacto.
Também temos de ter em consideração o apetite de risco (o quanto uma empresa consegue tolerar) versus o custo da solução. De maneira geral, as análises de risco normalmente implicam:
-
análise de potenciais ameaças
-
análise de vulnerabilidades
-
análide do impacto (desenvolvo na próxima etapa)
-
desenvolvimento estratégias de mitigação (próxima etapa)
Análise do Impacto no Negócio
Uma vez delineados os riscos da empresa, deveremos tomar atenção ao possível impacto desses vários riscos, e se é possível tolerá-los. Novamente, é necessário o input de vários especialistas e departamentos.
Processos de negócio que devemos ter em consideração nesta etapa são os salários, e informações dos empregados, transferência de trabalho e responsabilidade para outras áreas da empresa (é uma função dos recursos humanos), dívidas e empréstimos, processamento de dados de contas de crédito, taxas (função das finanças), e chamadas e informações dos clientes/consumidores e histórico e análises dos clientes (função de vendas e departamento de marketing), e sistemas de recuperação, servidores e backups incluindo o tempo e meios de recuperação (função dos sistemas IT).
Resumidamente, alguns dos elementos incluídos num report do impacto no negócio são:
-
processos e funções chave da empresa, e suas interdependências
-
dependências dos sistemas de informação e seus profissionais
-
impacto crítico nas operações
-
informação histórica e de backups, e outros recursos de recuperação
-
papéis chave, posições, conhecimento, experiência requerida por indivíduos
-
operações legais, financeiras, de mercado, e impacto no staff
-
trabalho remoto e distribuição de trabalho/tarefas
Desenvolvimento de Estratégias de Mitigação
Para pequenas empresas, as estratégias de mitigação podem ser bastante simples – desde manter backups remotos, e cópias das informações dos empregados e clientes. Contudo, para a maioria das empresas, o processo de desenvolvimento de estratégias é mais complexo, aqui já devemos incluir como é que o risco e impacto poderão ser tolerados, reduzidos, evitados ou transferidos. Para além da mitigação, esta etapa inclui estratégias de recuperação, alguns dos atributos incluídos numa análise de custo/capacidade são:
-
custo da mitigação ou recuperação
-
capacidades da opção de mitigação/recuperação
-
esforço para implementar e controlar a opção de mitigação/recuperação
-
qualidade dos produtos, serviços ou dados associados à opção escolhida
-
controlo retido pela companhia sob os processos de negócio
-
segurança da solução
-
o carácter e o julgamento qualitativo da opção de mitigação/recuperação escolhida
Desenho do Plano
Após as etapas de análise, já é possível desenvolver um plano. É preciso definir a metodologia que se vai aplicar, para maximizar sucessos e diminuir erros. Isto inclui processos como estabeler requisitos técnicos e de negócio, definição de âmbito e orçamento, intervalo de tempo e prazos a cumprir, métricas de qualidade, etc. Como mencionado nas etapas anteriores, de uma maneira geral, algumas das equipas envolvidas na implementação do plano serão equipas de crise ou danos, equipas responsáveis pelas operações de uma empresa, equipas técnicas, responsáveis pelos sistemas tecnológicos e de informação de uma empresa, equipas de transporte, management, de assuntos legais e políticos e administrativas, equipas de recursos humanos/comunicação social.
Treino, Testes e Auditoria
Após o desenho do plano, é necessário treinar as pessoas sobre a sua implementação através de exercícios ou simulações apropriadas. Todas as equipas mencionadas nas etapas anteriores, incluindo equipas de resposta imediata/emergência deverão trabalhar em conjunto para garantir uma assimilação do plano BC/DR.
Manutenção do Plano
É necessário definir um plano de manutenção, para rever e actualizar o plano BC/DR em vigor periodicamente. Mudança é algo constante nas organizações, desde alterações em operações, pessoal, regulações ou tecnologias, etc. Voltando às três componentes essenciais de um negócio:
Pessoas são promovidas, despedidas ou mudam naturalmente de emprego. Uma revisão periódica pode ajudar a determinar se existe pessoal cuja saída ou entrada da empresa afecta o plano em vigor.
Alterações aos processos deverão ser monitorizadas também, pois podem ocorrer mudanças significativas diariamente às operações de rotina de uma empresa. Mudanças críticas como o objectivo e requisitos de uma empresa deverão ser a maior prioridade.
Em relação à tecnologia, mudanças do equipamento utilizado, tanto científico como de manufacturação, políticas e requisitos, ou outras tecnologias e infraestruturas especializadas também deverão ser analisadas e monitorizadas periodicamente.
Coronavirus
A recente pandemia do Covid-19 pode ser considerada uma emergência natural, contudo a falta de preparação e contenção de muitos países resultou em bastantes erros humanos acidentais e contaminação desnecessária. Esta situação de emergência demonstrou a importância de ter métodos de continuidade de negócio e recuperação de desastres.
Uma pandemia mundial é um caso raro mas não menos importante para ter planeamento prévio. A maioria das empresas à escala global foi obrigada a recorrer aos seus planos BC/DR. Alguns dos impactos que as empresas sofreram e/ou tiveram de considerar foram os seguintes.
-
Impossibilidade dos empregados viajarem. Tanto os aeroportos como os transportes públicos encerraram ou minimizaram drasticamente os seus serviços, portanto tornou-se mais difícil, senão impossível de se deslocar.
-
Impossibilidade de ocupar áreas de trabalho e outros serviços durante tempo prolongado. Para além dos serviços não-essenciais terem fechado por completo durante umas semanas, algumas empresas, escolas e jardins de infância também o fizeram. Os pais trabalhadores, por exemplo, iriam lidar com a extra dificuldade de gerir a família e filhos.
-
Abrandagem ou paragem do crescimento económico e vendas. As empresas sem plataformas online, ou que se baseiam num serviço presencial (retalho, restaurantes, hotelaria, etc) foram as que mais sofreram.
-
Perda de produtividade e performance da empresa. Os empregados que não têm disponibilidade nem meios para trabalhar for a do seu local de trabalho baixaram os seus níveis de produtividade.
-
Custos relacionados com a contratação de empregados temporários e outras componentes necessárias. Não só é necessário apoiar os empregados doentes, como contratar substitutos que consigam realizar o mesmo trabalho.
-
Custos dos métodos tecnológicos distribuídos e teletrabalho. Muitas empresas tiveram de investir em métodos extra para que os empregados pudessem trabalhar remotamente, aceder aos recursos necessários para o fazer, manter-se online, e comunicar clara e constantemente com a empresa.
Considerando a recente crise do Coronavirus, as empresas deverão rever, analisar e actualizar os seus planos BC/DR para ajudar a minimizar esta e outras potenciais interrupções às suas operações normais. Podem ser tomados os seguintes passos para preparação e um planeamento e recuperação adequados:
-
Identificação do pessoal chave, nomeando pelo menos um porta-voz/ponto de contacto, ou outros membros de uma equipa selecionados para especificamente coordenar actividades de mobilização no caso de pandemia. Estes indivíduos deverão também ser responsáveis pela monitorização de notícias e anúncios, e deverá ser identificado e estabelecido pessoal backup, no caso de doença de membros efectivos.
-
Desenvolvimento de um plano de comunicação com os funcionários e de ação face a contaminação. Como mencionado anteriormente, a maioria das empresas terá de responder a vários cenários (como por exemplo, escolas fechadas, áreas de quarentana, colegas de trabalho infectados, etc… Inclui clarificar rumores, estado da empresa, e anúncios oficiais sobre o potencial retorno aos processos padrão.
-
Teste da capacidade dos funcionários poderem trabalhar de casa (por exemplo, alterar equipas para trabalhar remotamente em dias selecionados), protecção, e fornecimento de recursos para situações de trabalho remoto. Inclui fornecer meios informáticos, como laptops, monitores, teclados, impressoras, docking stations, criptografia, etc, e evitar se possível, transferir o trabalgo para computadores pessoais. Também inclui o treino do pessoal para garantir que os funcionários compreendam as suas funções e responsabilidades durante uma interrupção de negócios.
-
Coordenação com os principais fornecedores e terceiros. Implica desenvolver comunicações abertas e facilitar a coordenação com outras componentes externas, incluindo clientes, accionistas, parceiros e reguladores, e mídia.
Embora nenhum plano BC/DR consiga garantir o retorno imediato e total das operações de negócios, devido ao carácter e impacto do COVID-19, a criação de uma estrutura sólida e respectiva implementação de processos pode ajudar a preparar uma empresa e os seus funcionários para lidar interrupções significativas das operações comerciais.
Conclusão
A continuidade dos negócios e a recuperação de desastres não são conceitos novos para os negócios, mas o acto de avaliar e planear conscientemente potenciais problemas certamente foi ressaltado pelos eventos desastrosos de décadas passadas, incluindo terremotos, tsunamis, furacões, tufões, e ataques terroristas.
As empresas precisam sempre de planear para possíveis desastres que possam impactar a sua
capacidade de continuarem operacionais e gerarem receita. Sem um plano para recuperarem de qualquer evento inesperado ou desastre, não importa quão grande ou pequeno, muitas empresas acabam por falhar fatalmente, indo à falência, ou perdendo imenso dinheiro.
Ao desenvolver um plano de business continuity e disaster recovery, é necessário considerar
os três componentes principais dos negócios: pessoas, processos e tecnologia. Quando tomamos uma
visão holística da empresa e das suas operações através das lentes desses três elementos, torna-se mais provável saber que abordagens tomar para desenvolver um plano efectivo. Pessoas, processos e tecnologia devem ser considerados de forma integrada e holística, pois estão interrelacionados.
Através do processo de planeamento de BC/DR, análises de risco potencial, do impacto, e conseguintes alterações na empresa em prol deste plano conseguimos não só responder imediatamente e confiantemente em períodos de emergências e crise, mas beneficiar as empresas a um nível integral, aumentando a productividade das pessoas através de auditorias das funções críticas dos indivíduos e departamentos e uma melhor compreensão de como todos juntos funcionam e se complementam para realizar os objectivos da empresa; aumentando também a efectividade dos processos que constituem a empresa, e a utilidade das tecnologias implementadas, para que se possa tirar o máximo proveito dos sistemas de informação sabendo as suas limitações.
Originalmente escrito por C. M. Rodrigues.
Referências
-
Study shows human error major cause of data loss. https://www.itweb.co.za/content/Gb3BwMWoKmnM2k6V
-
COVID-19: 8 key considerations for workplace continuity. https://www.jll.pt/pt/views/covid-19-8-key-considerations-for-workplace-continuity
-
Susan Snedaker. (2007). Business Continuity and Disaster Recovery Planning for IT Professionals.
-
What is BCDR? Business continuity and disaster recovery guide. (Fevereiro 2020). https://searchdisasterrecovery.techtarget.com/definition/Business-Continuity-and-Disaster-Recovery-BCDR
-
Business Continuity vs Disaster Recovery: 5 Key Differences. https://phoenixnap.com/blog/business-continuity-vs-disaster-recovery
-
Disaster recovery and business continuity auditing. https://en.wikipedia.org/wiki/Disaster_recovery_and_business_continuity_auditing
Sunday, 7 June 2020
An Introduction to Natural Language Processing (NLP)
Natural Language Processing (NLP) is a multidisciplinary field combining linguistics, artificial intelligence and computer science. Its main goal is the processing and interpreting natural language automatically – this includes interpreting sentiment, knowing which parts and words are relevant, comparing writing styles, and ultimately understanding all the nuances that compose human communication.
Knowledge of language and discourse conventions is needed to understand ambiguities and engage in complex language behavior. This is why speech and text recognition computational techniques must encompass phonetics and phonology (the study of linguistic sounds), morphology (meaningful components of words), syntax (structural relationship between words), semantics (meaning), pragmatics (how language is used to accomplish goals) and discourse (linguistic units larger than a single utterance).
Most of the tasks in speech and language processing can be viewed as methods to resolve the ambiguity present in language. The challenges in Natural Language Processing involve two processes or subsets:
-
Natural Language Understanding – understands the meaning of given text, including the nature and structure of each word inside text. NPL tasks should resolve these problem of ambiguity:
-
Words can have multiple meanings (Lexical)
-
Sentences can have multiple meanings (Semantic)
-
Sentences can have multiple parse trees (Syntactic). Parse trees represent the syntactic structure of a string according to some context-free grammar.
-
A previously mentioned phrase or word has a different meaning (Anaphoric)
-
Natural Language Generation – the process of generating text from structured data, with meaningful phrases and sentences.
-
Text Planning – planning and ordering of structured data.
-
Sentence Planning – sentences and words are combined to represent the flow of information.
-
Realization – production of grammatically correct sentences to convey meaning and represent text.
-
NLP offers many practical applications, as the modern real world revolves around communication and human-computer interactions. The ability to recognize, interpret meaning and generating a relevant response can be useful in some of the areas below.
Healthcare
From historical records and patient’s own speech, NLP can aid in diagnosis and treatment of patients, by recognizing and predicting diseases, providing a more efficient approach to healthcare for the general population. Chatbots therapists are also being used in serving patients with anxiety, depression or other mental disorders, providing convenient and impersonal opportunities to those who most need it.
Business and Marketing
By applying sentiment analysis to social media, interviews, reviews, and customer surveys we can extract relevant information about the consumers’ choices and what drives their decisions, what attracts and what repels them – this is fundamental in offering competitiveness to organizations through applying the learned information to marketing strategies. NLP methods can also be applied to the human resources field, by automating the recruitment of potential hires.
Identifying Spam and Fake News
Some companies (eg. Google or Yahoo) already have NLP methods (eg. tokenizing spam terms and words) integrated in their servers to analyze text in emails, filter them as spam or not spam before they even reach the recipient’s inbox. Following the same train of thought, a similar approach can be used in identifying fake, disingenuous or biased news.
Chat bots and other Text and Voice-driven interfaces
Artificial intelligence bots and voice interfaces (eg. Cortana, Alexa, Siri…) currently apply NLP methods to serve their customers on the most menial tasks – by responding to vocal prompts, the interface over time creates a personalized repository of speech information about a customer, plus with internet access, they can offer assistance in day-to-day tasks, such as playing a favorite song, reminding the customer of activities or facts, telling the weather forecast, report news, make reservations, etc.
A general NLP pipeline consists of the following:
-
Text extraction
-
Data Pre-processing
-
Machine Learning algorithms
-
Interpretation of results
This article will review and synthesize the most covered strategies in available literature to solve Natural Language Processing problems, presenting in a pragmatic way the general pipeline. The different NLP techniques and algorithms I will review and explore in this study are the following:
-
Tokenization
-
Bag of Words
-
Stemming
-
Lemmatization
-
Sentiment Analysis
-
Topic Modeling
-
Text Generating
Literature Review
1. Data Pre-Processing
Text pre-processing encompasses selecting, and cleaning and transforming the text data to solve our problem. For this effect, we can apply syntactic analysis to decide the starting and ending of each sentence, so that any string of characters from the start and up to the full stop symbol is taken as one full sentence.
Semantic analysis are used to understand the role of every word in a sentence, such as nouns, verb, adjective, adverb, etc. This process is called Part-Of-Speech tagging.
Some of the most widely used techniques of text pre-processing are further described below, ordered as a typical NLP pipeline. The collection of documents used as data set is called a corpus, and the collection of words or sequences we select as relevant in our index is called a vocabulary or lexicon.
1.1 Tokenization
Analyzing the words in text data is one of the first and most basic steps of the overall NLP strategy. Tokenization is a particular kind of segmentation – the splitting of phrases or paragraphs into smaller, individual segments. The segments can be a document divided into paragraphs, a paragraph divided into sentences, sentences into phrases, or phrases into words (tokens). After tokenization we can count the number of words and its frequency in a text, for further organization and classification in levels of importance. This ultimately turns an unstructured string into a numerical data structure, best suited for machine learning.
Methods of tokenization:
-
Python’s split() function method, using whitespace as a “delimiter”
-
re.compile() and re.findall() with Regular Expressions library (RegEx) in Python
-
word_tokenize() with Natural Language Toolkit library (NLTK) in Python
-
create_pipe() with open-source spaCy library for advanced NLP
-
text_to_word_sequence() with open-source Keras library for deep learning
-
tokenize() and split_sentences() with open-source library Gensim for unsupervised topic modeling and NLP
1.1.2 N-grams
N-grams are sequences of N-words. Bigrams are two words frequently occurring together in a document (example: “Las Vegas”. Trigrams are three words frequently occurring, and so on (example: “The Three Musketeers”). We usually create specific N-gram models to decide which N-words can be chunked together to form single entities. This can help in word predictions and to make spelling error corrections.
An
N-gram model basically predicts the occurrence of a word, based on
the occurrence of its N-1 previous words. Gensim’s Phrases
model can build and implement the bigrams, trigrams, quadgrams and
more.
1.2 Bag of Words (BOW)
This is a NLP model used to represent text data in fixed-length vectors or matrix by counting how many times each word appears in the document. This model is only concerned if previously chosen known words (tokens) occur in the document.
Let’s assume we ignore the order and grammar of the words, and put them all jumbled into a “bag”, one bag for each sentence or document to summarize while capturing the essence of a document.
After we define our vocabulary by tokenization, we can score how many times the tokens occur in a document, and does not specify order or place.
The simplest scoring method is to mark the presence of words as a boolean value, 0 for absent, 1 for present. As the scale of the document text increases, so does the length of the vectors. We may come across lots of zero scores, as variability can make some documents contain very few tokens – this results in a sparse vector, with lots of zeros, which require more memory and computational resources to process.
It is considered best practice to decrease the size and complexity of the vocabulary when using a BOW model, by normalizing it. Some techniques to solve this problem include:
-
Removal of stop words (commonly used unimportant words in extracting meaning from the overall text, such as “the”, “a”, “of”, etc…). Stop words can also contain useful information, and discarding them is not always helpful.
-
Ignoring upper/lower case, punctuation and numbers.
-
Fixing misspelled words.
-
Stemming – the reduction of inflected words to their root form (eg. “caring” becomes “car”). This is all about removing suffices from words in an attempt to combine words with similar meanings together under their common stem. A stem doesn’t need to be a correctly spelled word, but merely a label or token representing different spellings of a word.
-
Lemmatization – removal of inflection of words, taking the morphology into consideration (eg. “caring” becomes “care”). Because we need to normalize a word down to its semantic root – its lemma – it will require more computational power and language expertise than Stemming.
In the context of information retrieval (chatbots, search engines, etc), these vocabulary compression approaches can reduce the precision and accuracy as there will be more documents associated with the same query words, yet not relevant to the words’ original meanings.
The BOW model is very simple to implement, although it is only as good as the defined vocabulary or tokens – the size and sparsity of vectors, and the discarding of word order are some of the shortcomings to have in mind when using this model. Given m documents and n words in the available vocabulary, we can create a document-term matrix.
Methods of implementing Bag of Words (BOW)
-
Tokenizer() with open-source Keras library for deep learning
-
Count Vectorizer with scikit-learn in Python (document-term matrix)
1.2.2 TF-IDF Vectorization
While Bag of Words are vectors of word counts or frequencies, TF-IDF vectors are word scores that better represent their importance, and count the exact spellings of terms in a document. These are both frequency-based statistical models that can be applied separately or as part of an NLP pipeline.
Merely counting words can’t be as descriptive as using their TF-IDF score. TF-IDF matrices, or document-term matrices have been the mainstay of search and information retrieval for decades. Every web-scale search engine with millisecond response times has a TF-IDF document-term matrix hidden behind it.
2. Advanced Natural Language Processing Techniques
2.1. Sentiment Analysis
Sentiment Analysis is the process of assigning sentiment scores such as positive, negative or neutral, to the topics, themes and categories within a sentence. There are two approaches to sentiment analysis:
-
A machine learning model that learns from data.
Relies on a labeled set of statements of documents to train a model to create the rules. We would need a lot of data, text labeled with the “right” sentiment score. An example of data used for this approach are #hashtags, often used to create a self-labeled dataset.
-
A rule-based algorithm composed by a human.
Uses human-designed rules (heuristics) to measure sentiment. (There are already implemented available sentiment libraries scored by linguists, with respective polarity and subjectivity scores)
After cleaning and organizing our data, we must define the sentiment-bearing phrases or components and assign them a score (-1 to +1). These sentiment-bearing components will compose a sentiment library, it should have a large collection of adjectives and phrases that have been hand-picked and scored by humans; this can be a lengthy and tricky process as different people can attribute different scores to the same component. Multi-layered approaches enable sentiment scores to cancel each other out.
After defining the sentiment library, some rules or guidelines for evaluation of sentiment expressed towards a particular component can be set, based on its proximity to positive or negative words. No rule-set can account for every abbreviation, acronym or double-meaning that may appear in any given text document, so a purely rules-based system is something that should be avoided.
Usually, the resulting hit counts are resolved by log odds ratio operation, which returns a sentiment score for each phrase on a scale of 1 (very negative) to +1 (very positive).
Methods of implementing Sentiment Analysis
-
TextBlob().sentiment with TextBlob library in python, built on top of NLTK
-
VADER algorithm – Valence Aware Dictionary for Sentiment Reasoning (NLTK package has an implementation of this algorithm)
2.2. Topic Modeling
This is a method for uncovering topics and themes in text data, by clustering words and assigning them values based on their distribution. Let’s review some of the most popular topic modeling techniques:
Latent Semantic Analysis (LSA)
When you use this tool, not only can you represent the meaning of words as vectors, but you can use them to represent the meaning of entire documents. This involves replacing counts in the generated document-term matrix with a TF-IDF score (term frequency times inverse document frequency. Term frequencies are the counts of each word in a document; Inverse frequency means that you’ll divide each of the word counts by the number of documents in which the word occurs), which is used as a weighting factor. To reduce the matrix’s sparsity, redundancy and noise, we perform dimensionality reduction with singular value decomposition technique. LSA is quick and efficient, but needs large sets of documents to get accurate results.
Probabilistic Latent Semantic Analysis (PLSA) uses a probabilistic method instead of singular value decomposition to solve for sparsity and noise.
Latent Dirichlet Allocation (LDA)
One of the most popular topic modeling techniques. LDA finds groups of related words by assigning each word to a random hidden topic, as many as the user chooses. It uses Dirichlet distributions, and assigns each document to a mixture of topics – this means each document can be described by probability distributions of topics. After assigning every word to a topic, the algorithm goes multiple times through each word iteratively and reassigns it to a topic taking into consideration how often the topic occurs in the document, and how often the word occurs in the topic overall. LDA algorithm require you to reprocess the entire corpus every time you add a new document, therefore being slower.
Methods of implementing topic modeling
-
TfidfVectorizer, TruncatedSVD modules with scikit-learn
-
LdaModel module with open-source library Gensim for unsupervised topic modeling and NLP
2.3. Text Generation
The goal is to generate text that is indistinguishable from human-written text. This can be achieved with Markov chains at its simplest form, or deep learning and Long Short-Term Memory (LSTM). In markov chains, the next state of a process only depends on the previous state, so the scope is very limited in generating text. LSTM takes into account not only the previous word, but other things such as the words before the previous word, what words have already been generated, etc.
Methods of implementing Text generation
-
LSTM with open-source Keras library for deep learning
3. Available Tools for Natural Language Processing
-
Natural Language Toolkit (NLTK) is one of the most popular suite of libraries for dealing with a variety of NLP tasks.
-
SpaCy is a free open source library for advanced NLP tasks in Python. It is best suited for dealing with large volumes of text data. It is fast and easy to use and very well documented, both for research and teaching purposes.
-
TextBlob is another Python library, intuitive and user friendly, and ideal for beginners
-
MonkeyLearn is a SaaS platform for advanced NLP tasks, that lets you build customized models to solve problems.
-
Gensim is a highly specialized open source library that is more directed at topic modelling and document similarity. It is best used in conjunction with other libraries.
-
Keras is a library best used for text processing, such as tokenization, text classification and text generation.
4. Implementation Project
I made a simple implementation of the LDA model (topic modeling) for the “20 Newsgroup” dataset. It involves tokenization, stemming and lemmatizing, N-gram models, and gensim’s LDA model. The project and dataset can be found at:
https://github.com/ada5tra/jupyter
Project by Alice Zhao:
https://github.com/adashofdata/nlp-in-python-tutorial
Article originally written by Rodrigues C. M.
References
Sentiment Analysis Explained. Retrieved from https://www.lexalytics.com/technology/sentiment-analysis
Alice Zhao. (2018, July 28). Natural Language Processing in Python. Retrieved from https://youtu.be/xvqsFTUsOmc
Diego L. Y (2019, January 15). Your Guide to Natural Language Processing (NLP). Retrieved from https://towardsdatascience.com/your-guide-to-natural-language-processing-nlp-48ea2511f6e1
Joyce Xu. (2018, May 25) Topic Modeling with LSA, PLSA, LDA & lda2Vec. Retrieved from https://medium.com/nanonets/topic-modeling-with-lsa-psla-lda-and-lda2vec-555ff65b0b05
Hobson Lane, Cole Howard, Hannes Max Hapke. (2009) Natural Language Processing in Action: Understanding, analyzing, and generating text with Python. ©2019 by Manning Publications Co.
Aditya Jain, Gandhar Kulkarni, Vraj Shah.(2018). Natural Language Processing. Retrieved from https://www.researchgate.net/publication/325772303_Natural_Language_Processing
Selva Prabhakaran. Topic Modeling with Gensim (Python). Retrieved from: https://www.machinelearningplus.com/nlp/topic-modeling-gensim-python/
Victor Zhou. (2019, December 11). A Simple Explanation of the Bag-of-Words Model. Retrieved from https://towardsdatascience.com/a-simple-explanation-of-the-bag-of-words-model-b88fc4f4971
The Future of Natural Language Processing. https://www.youtube.com/watch?v=G5lmya6eKtc
A Systematic Literature Review on High Performance Computing
“I
need to do multiple sampling events of multiple simulations. No way
can my existing system pull that off in a timely fashion, if at
all.”
- David Warner; Research Fisheries, Biologist
“We
had an 80-node cluster here in Golden several years ago, but when I
left for Memphis, nobody wanted to manage it. Now we have an
overworked 12 node server.”
- Oliver Boyd; Research Geophysicist
High Performance Computing (HPC) most generally refers to the practice of aggregating computing power in a way that delivers much higher performance than one could get out of a typical desktop computer or workstation in order to solve large problems in science, engineering, or business.
In today’s world, larger and larger amounts of data are constantly being generated. The nature of computing is changing, with an increasing number of data-intensive critical applications: by 2020, 25 billion devices will be connected and will generate over two zettabytes of traffic every year. As a result:
-
Industry and SMEs are increasingly relying on the power of supercomputers to work on innovative solutions, reduce costs and decrease time to market for products and services.
-
Modern scientific discovery requires very high computing power and capability: for example, to accelerate genome sequencing by two orders of magnitude and enable scientists to crack cancer diseases.
In this work we will compile and provide an overview of the latest developments in the various branches of HPC such as supercomputers, CPU/GPU, distributed computing and more.
Supercomputers
Supercomputers have the highest level of performance and are the largest computers available at any point in time. They were first introduced in the 1960’s by Seymour Cray, but the term was first used in New York World (1920) to describe “new statistical machines with the mental power of 100 skilled mathematicians in solving even highly complex algebraic problems”.
The earliest models such as IBM 7030, UNIVAC and SSEC demonstrated potential to be commercially distributed. Since November 2017, all of the world’s fastest supercomputers run Linux-based operating systems. The current best supercomputer can do 200,000 trillion calculations per second.
The performance of a supercomputer is generally measured in floating-point operations per second, which is an arithmetic used to represent very small and very large real numbers. A variety of architectural developments were employed to increase speed and performance beyond that which technology could offer.
A sole supercomputer uses shared memory and tightly coupled processors. We can also refer to a cluster or grid of loosely coupled machines working together to solve a common problem as a “virtual supercomputer”.
Architectural Evolution
Supercomputer |
Improvement |
Year |
CDC 6600 |
|
1961 |
IBM 360 |
|
1964 |
|
|
1964 |
ILLIAC IV |
|
1966 |
CDC STAR-100 |
|
1974 |
Cray 1 |
|
1975 |
CDC CYBER 205 |
|
1980 |
Distributed Computing
Distributed computation or processing involves interconnecting multiple independent entities (usually computers or processors), which communicate and work together to solve a common problem.
This includes parallel processing in which a single computer uses more than one CPU to execute programs.
Any process, if divisible, can be performed in parallel. Although the terms parallel and distributed systems overlap there is a single characteristic that distinguishes them:
-
In parallel computing, the multiple processors have direct access to a shared memory, which forms a common address space, to exchange information between processors. The processors are in close physical proximity and tightly coupled, and usually run the same operating system (homogeneous software and hardware), such as the processors inside a supercomputer.
-
In distributed computing, each processor has its own private memory. Information is exchanged by passing messages between the processors, such as processors in distinct independent devices.
For computing systems, a distributed system is a collection of semi-autonomous computers that appear to the user as a single computer, they are also characterized by:
-
No common physical clock
-
No shared memory – requires information to be exchanged by passing messages between the processors, this can be implemented with message-passing protocols such as remote procedure call (RPC) or its object-oriented analog remote method invocation (RMI).
-
Autonomy and heterogeneity – the processors may have different speeds and can be running on different operating systems
-
Geographical separation and resource sharing – by sharing and accessing geographically remote data and resources, the performance/cost ratio is increased, because a task can be partitioned across the various entities in the distributed system.
Pros |
Cons |
|
|
-
Distributed Systems Challenges
Granularity - In computing, the relative measure of the amount of processing to the amount of communication within the distributed program is termed as granularity.
If the degree of parallelism is fine-grained, there are fewer CPU instruction executions compared to the number of times the processors communicate (either via shared memory or message-passing) and synchronize with the other processors. This type of parallelism is best suited for memory-sharing, tightly coupled systems, as the latency delays of communicating with physically remote multiprocessors would degrade the overall output.
If the degree of parallelism is coarse-grained, this means a program is being split into larger tasks, which means more computing power and load as most of the program is being executed sequentially on a processor. This results in low communication and synchronization overhead, which makes this type most suited for message-passing, loosely coupled systems.
Communication - Involves implementing appropriate mechanisms for communication, such as message-oriented (MPI) versus stream-oriented communication, Remote Procedure Call, Remote Method Invocation. In the case of tightly coupled system, memory sharing systems OpenMP is commonly used.
Scalability and Modularity – the data and services must be as distributed as possible. Techniques such as replication (having backup servers), cache management and asynchronous processing help to achieve scalability.Naming, consistency and replication – easy to use and robust schemes for names, identifiers and addresses for locating resources in a scalable manner. To provide fast access to data and scalability, dealing with consistency among the cache/replicas (backups and checkpoints) is essential.
Data storage and access – schemes for accessing the data in an efficient and scalable manner.
Reliability and Fault tolerance – being able to maintain efficient operation despite crashes or any process or nodes.
Security – access control, secure channels and other methods of cryptography are required for maintaining any system operational.
Transparency and APIs – for ease of use by non-technical users, an Applications programming interface and other specialized services are important. An example of an API platform for distributed and parallel computing is NVIDIA’s CUDA.
-
Distributed Systems Architecture Models
Client/Server – a machine offers a service, and multiple clients communicate with the server to use the service.
Peer-to-Peer (P2P) – P2P arose as a paradigm shift from the client-server computing. All involved entities exist at the same “peer” level, are equally privileged, without any hierarchy among the processors, this means they all play a symmetric role in computation.
It’s comprised of a flexible network of autonomous, self-organizing client machines connected by an overlay network.
This type of organization is more appealing to business file sharing, content delivery and social networking.
-
Distributed Systems Applications
Many devices can be used to execute distributed computing, such as computers, smartphones, tablets, sensors, etc. Some of these technologies have very distinct capabilities, which are not always compatible with typical distributed system architectures. We explore some of its applications’ challenges below.
Mobile systems
These systems typically use wireless communication, based on a shared broadcast medium. Hence, the characteristics of communication are different, other problem variables can be the range and power of transmission, battery power conservation, signal processing and interference.
Sensor networks
A sensor is a processor with an interface capable of sensing physical parameters such as temperature, pressure, velocity, noise levels, traffic patterns, etc. The streaming data reported from a sensor network differs from the data reported by computer processes, in that the data is external to the computer, limiting the nature of information.
Ubiquitous computing
Ubiquitous systems represent a class of computing where the processors are embedded in and pervading through the environment, while performing functions in the background. Smart workplace or intelligent homes are examples of these distributed systems – these are characterized as having small processors operating collectively in a dynamic environment network.
Organization of Computational Resources
-
Clusters
“Grid computing focuses on providing high performance and high scalability. Cloud computing alternatively focuses on delivering high scalability and low cost. Cloud services therefore aim to provide a far lower performance to price ratio and cannot surpass the performance of individual grid components. This is problematic for message passing workloads which rely heavily on high performance computers and fast interconnects.”
A cluster is a composite of many separate computers or servers, which are called nodes.
The nodes in the cluster should be interconnected, preferably by a known network technology, for maintenance and cost control purposes. Sometimes, replacing a computer that has problems can stop the entire system, so it is very important to implement a solution that gives the possibility of adding or removing nodes without compromising the entire system.
Usually clusters are owned and operated by a single authority, which allows full access to the hardware and enables the users to specifically modify the cluster and the application to achieve optimum performance, this can also be a drawback as unauthorized access (hacking) only needs to target the sole owner.
This type of solution is suited for tightly coupled system, which uses the same hardware (homogeneous).
Clusters require substantial investment and technical maintenance, making this solution less accessible to smaller organizations.
-
Grid Computing
Grid computing applies the resources or many computers in a network to a single problem at the same time – usually to solve problems that require a great number of processing cycles. This type of solution is suited for large-scale decentralized systems (loosely coupled) and offers dynamism and diversity (heterogeneous).
Grid computing acts in contrast to the notion of a supercomputer, which has multiple processors connected by a local high-speed computer bus.
-
Cloud Computing
Since 2012, the HPC community has made many progresses towards the “democratization of HPC”: making high performance computing available to a larger and larger group of engineers and scientists. One influencing factor is cloud computing which enables those who cannot afford or do not want to buy their own HPC server to access computing resources in the cloud, on demand, and pay only for what they use.
Forrester’s 2020 predictions for Cloud Computing indicates that “the public cloud market – cloud apps (software-as-a-service [SaaS]); cloud development and data platforms (platform-as-a-service [PaaS]); and cloud infrastructure (infrastructure-as-a-service [IaaS]) – will reach $411 billion by 2022. In 2020, the combined platform and infrastructure markets will grow another 30%, from 2019 to $132.8 billion.” This demonstrates that cloud computing is having investor attention as an interesting market with various growth possibilities.
Microsoft is a lead player in HPC Cloud Computing, alongside with Amazon and Google, according to Gartner’s 2019 Cloud IaaS Magic Quadrant. Microsoft’s Azure is an example of a pay-as-you-go service which translates in a more tailored and target-specific usage of the infrastructure provided to the client.
-
CPU/GPU
“Moore’s Law has caused the pendulum of visual computing to swing away from dedicated hardware and specialized software to general-purpose hardware and software packages”
- Jim Jeffers; Principal Engineer, Engineering Manager, SW Defined Visualization, Intel
The difference between CPU and GPU is that the central processing unit is composed of a small number of cores with a complex architecture operating at a high clock frequency, enabling better handling of separate threads of sequential instructions, while the graphics processing unit is composed of a large number of basic cores, enabling the processor quickly solve highly parallelized problems . As a result, GPU, unlike CPU, provides a significantly better performance when dealing with highly parallelized problems. Behavioral patterns of these two processor types are also different: for example, while CPU requires frequent access to the memory, GPU does it less frequently, but sends considerably larger amounts of information. Hybrid CPU/GPU architecture allows combining the advantages of both processor types, using CPU for sequential computing and GPU – for parallel computing. In 2014, researchers from INESC-IST-UL benchmarked several GPU and CPU with the following results:
References
What is High Performance Computing? (n.d.). Retrieved May 30, 2020, from https://www.usgs.gov/core-science-systems/sas/arc/about/what-high-performance-computing
High-Performance Computing (2019). Retrieved May 31, 2020, from https://ec.europa.eu/digital-single-market/en/high-performance-computing
Sukharev, P. V., Vasilyev, N. P., Rovnyagin, M. M., & Durnov, M. A. (2017). Benchmarking of high-performance computing clusters with heterogeneous CPU/GPU architecture. 2017 IEEE Conference of Russian Young Researchers in Electrical and Electronic Engineering (EIConRus). 2017 IEEE Conference of Russian Young Researchers in Electrical and Electronic Engineering (EIConRus). https://doi.org/10.1109/eiconrus.2017.7910619
Gartner (2019). Magic Quadrant for Cloud Infrastructure as a Service, Worldwide. Retrieved May 31, 2020, from https://www.gartner.com/en/documents/3947472/magic-quadrant-for-cloud-infrastructure-as-a-service-wor
Forrester. (2019). Predictions 2020: Cloud Computing. Retrieved May 31, 2020, from https://www.forrester.com/report/Predictions 2020 Cloud Computing/-/E-RES157593#
Andriole, S. (2019, November 20). Forrester Research Gets Cloud Computing Trends Right. Retrieved May 31, 2020, from https://www.forbes.com/sites/steveandriole/2019/11/20/forrester-research-gets-cloud--computing-trends-right/#9b5d6ee68a26
Vestias, M., & Neto, H. (2014, September). Trends of CPU, GPU and FPGA for high-performance computing. 2014 24th International Conference on Field Programmable Logic and Applications (FPL). 2014 24th International Conference on Field Programmable Logic and Applications (FPL). https://doi.org/10.1109/fpl.2014.6927483
Supercomputer architecture. (2020). Retrieved May 31, 2020, from https://en.wikipedia.org/wiki/Supercomputer_architecture
Distributed Computing: Principles, Algorithms and Systems. A. D. Kshemkalyani and M. Singhal. (2007, January 2007).