Quem me conhece, sabe que sou aficionado por livros. Há pouco mais de 1 ano, eu comprei o livro “Software Livre: Potencialidades e Modelos de Negócio” (escrito por Cezar Taurion) em um bazar do Exército da Salvação, mas só agora consegui ler esse livro. Sempre me interessei pela cultura do software livre e o que ela pode proporcionar, mas fazia tempo que eu não lia sobre esse assunto. E esse livro, apesar de antigo (edição de 2004), é um livro que envelheceu bem e continua atual do meu ponto de vista.

Neste texto, eu pretendo fazer uma ligação de software livre com inteligência artificial (IA), já que o primeiro é um assunto que eu conheço um pouco mais após a leitura do livro e o segundo é o tópico principal deste blog.

Gostou do tema? Não deixe de conferir o texto!

Software Proprietário e Software Livre

No software proprietário, uma empresa detém os direitos sobre o sistema e seu código-fonte. É responsabilidade da empresa que possui a patente do software decidir o que deve ser feito com o software para melhorar a obtenção de lucro. Por exemplo, o licenciamento do software costuma ser por aparelho (computador, celular, servidor, etc) instalado. A partir do momento que o usuário obtém uma cópia do software, ele não pode alterar o código-fonte do produto e nem distribuir cópias daquele produto porque assim estaria cometendo o ato ilícito de pirataria. Por outro lado, o usuário pode utilizar o sistema em seu aparelho normalmente e geralmente conta com o suporte técnico da empresa que criou o produto.

O software livre é um conceito em que o software passa a ter um tipo de licenciamento diferente do software proprietário, mas software livre não é o mesmo que software gratuito. No software livre, o usuário geralmente obtém uma cópia do produto por preço simbólico e muitas vezes gratuitamente por download no site do distribuidor. A partir daí, o usuário pode utilizar o sistema, ter acesso ao código-fonte, modificar o software original, distribuir novos produtos com base no código-fonte original e compartilhar cópias com outras pessoas sem cometer o ato ilícito de pirataria. Apesar de todos os benefícios, geralmente o usuário não conta com suporte exclusivo dos desenvolvedores. Caso o usuário ou empresa queira um suporte mais rápido, deve buscar consultorias especializadas naquele software e elas podem cobrar caro por isso.

Software proprietário e livre possuem vantagens e desvantagens, e eu recomendo a leitura do livro mencionado no início do texto para quem tem interesse em uma discussão mais séria sobre o assunto.

Neste texto irei falar apenas de software livre. Eu consigo enxergar os pontos positivos do software proprietário, mas acredito que a maioria das pessoas que acessam o blog são estudantes que tem o interesse de aprender. Nesse caso, eu acredito que o software livre não fornece barreiras financeiras (geralmente a instalação é gratuita) e ainda permite que a pessoa possa mexer no código-fonte, recompilar o sistema e quem sabe até passar a contribuir com frequência para a evolução do software (e como consequência, para a própria evolução profissional).

Um outro motivo para eu ter escolhido software livre, é que eu mesmo passei a ter vontade de contribuir com algum software desse tipo durante a leitura do livro. E nada melhor do que fazer um levantamento de quais existem. O restante desse texto é o levantamento que fiz, o qual eu acredito que poderá ser útil para outros também.

Software Livre em Inteligência Artificial

Alguns exemplos de software livre que podem ser aplicados em IA são listados a seguir separados por categoria. Se os nomes das licenças de cada um deles não fizerem sentido, vocês podem clicar aqui. No link anterior, é apresentado o que é exigido, permitido e proibido para cada licença de software livre.

Linguagens de Programação

GNU Octave

octave

Descrição: Uma linguagem interpretada muito usada para computação numérica. É um software livre e gratuito similar ao MatLab (software proprietário). Assim como o MatLab, possui muitas bibliotecas de apoio que implementam técnicas de aprendizado de máquina, algoritmos genéticos, visão computacional e outras técnicas usadas em IA.

Onde está sendo usada: Principalmente em universidades ao redor do mundo.

Licença: GPL v3 ou posterior.

Desenvolvido com: C++.

URL do Projeto: https://www.gnu.org/software/octave/

Java (OpenJDK)

java_duke

Descrição: Java é uma linguagem de programação orientada a objetos, sendo a mais usada no mundo e para os mais diversos propósitos. Com Java é possível desenvolver para desktop, web, smartphones, etc.

Onde está sendo usada: Além de ser usada comercialmente por muitas empresas, ela tem aparecido em projetos de IA como veremos a seguir.

Licença: GPL v2.

Desenvolvido com: C e C++.

URL do Projeto: http://openjdk.java.net/

Python

python

Descrição: Linguagem de programação lançada em 1991, mas que nos anos 2000 passou um pouco esquecida. Recentemente voltou a ganhar destaque por ser fácil de aprender, orientada a objetos e por ter aplicações em: Web com o framework Django, computação científica com NumPy, análise de dados com Pandas, aprendizado de máquina com SciKit-Learn, etc.

Onde está sendo usada: YouTube, Lucasfilm Ltd., Tensor Flow (Google), Apache Spark, Operação Serenata de Amor, Blender, EVE Online e outros.

Licença: Python (uma licença aberta aprovada pela Open Source Initiative – OSI).

Desenvolvido com: C.

URL do Projeto: https://www.python.org/

R

r

Descrição: Uma linguagem de programação com suporte a operações estatísticas e exibição de gráficos. É muito utilizada por estatísticos, mas também possui funções de aprendizado de máquina.

Onde está sendo usada: Empresas de diferentes setores, IME-USP (projeto TANGO) e outras universidades.

Licença: R possui múltiplos licenciamentos, variando com pacotes e arquivos (BSD, GPL, LGPL, MIT e outras).

Desenvolvido com: C e Fortran.

URL do Projeto: https://www.r-project.org/

Data Science, Big Data e Aprendizado de Máquina

Apache Hadoop

hadoop

Descrição: O Apache Hadoop é um software livre cujo propósito é realizar computação distribuída de forma confiável e escalável. Para alcançar esse propósito, o Hadoop realiza o processamento distribuído de grandes conjuntos de dados em aglomerados (clusters) de computadores. Muito utilizada em Big Data.

Onde está sendo usado: Amazon, Adobe, AOL, eBay, Facebook, Google, IBM (inclusive IBM Watson), Last.fm, LinkedIn, Mercado Livre, Spotify, Telefonica Research, Twitter, Universidades ao redor do mundo, Yahoo e muitos outros. A página do Hadoop é bem completa quando consideramos empresas e depoimentos de como Hadoop é usado nelas, não deixem de conferir clicando aqui.

Licença: Apache v2.

Desenvolvido com: Java e C.

URL do Projeto: http://hadoop.apache.org/

Apache Mahout

mahout

Descrição: Biblioteca da Apache Software Foundation (ASF) que facilita a implementação de algoritmos de aprendizado de máquina. Geralmente é usada para descobrir interesses dos usuários e em sistemas de recomendação.

Onde está sendo usado: Adobe, AOL, Foursquare, Intel, LinkedIn, Twitter, Yahoo e outros.

Licença: Apache v2.

Desenvolvido com: Java e Scala.

URL do Projeto: https://mahout.apache.org/

Apache Spark

spark

Descrição: O Apache Spark é um motor de processamento de Big Data, similar ao Hadoop, porém mais rápido segundo alguns benchmarks. Pode usar a biblioteca MLlib que possui algoritmos de aprendizado de máquina otimizados para lidar com os grandes volumes de dados do Apache Spark.

Onde está sendo usado: Amazon, Baidu, eBay, IBM, Samsung, TripAdvisor e outras.

Licença: Apache v2.

Desenvolvido com: Java, Scala, Python e R.

URL do Projeto: http://spark.apache.org/

OpenNN

opennn

Descrição: Uma biblioteca que implementa técnicas de Redes Neurais em C++.

Onde está sendo usado: Desconhecido.

Licença: LGPL.

Desenvolvido com: C++.

URL do Projeto: http://www.opennn.net/

Operação Serenata de Amor

serenata_de_amor

Descrição: Projeto que aplica algoritmos de aprendizado de máquina para melhorar o cenário político de diferentes países. O objetivo do projeto é melhorar a vida em diferentes países, ensinar a votar e possivelmente apontar atos ilícitos de políticos.

Onde está sendo usado: No Brasil, para lutar contra a corrupção.

Licença: MIT.

Desenvolvido com: Python.

URL do Projeto: https://github.com/datasciencebr/serenata-de-amor

Tensor Flow

tensorflow

Descrição: Tensor Flow é uma biblioteca para desenvolvimento de aplicações em aprendizado de máquina. A biblioteca foi inicialmente desenvolvida na Google, pelo Google Brain Team. Na página do projeto é informado que a biblioteca não foi concluída ainda, mas que o código-fonte foi disponibilizado para que a comunidade do software livre defina os rumos da biblioteca.

Onde está sendo usada: Google, Snapchat, Uber, Twitter, ARM e outras.

Licença: Apache v2.

Desenvolvido com: C, C++ e Python.


URL do Projeto:
https://www.tensorflow.org/

Processamento de Linguagem Natural

Apache OpenNLP

opennlp

Descrição: A biblioteca OpenNLP permite aplicar técnicas de processamento de linguagem natural usando aprendizado de máquina. Entre as técnicas de processamento de linguagem natural suportadas estão: tokenização, segmentação de sentenças, extração de entidades nomeadas (nomes de pessoas, locais, etc), parsing e outras.

Onde está sendo usado: Desconhecido.

Licença: Apache v2.

Desenvolvido com: Java.

URL do Projeto: https://opennlp.apache.org/

Stanford CoreNLP

stanfordcorenlp

Descrição: Um conjunto de ferramentas de análise de linguagem natural. Consegue tokenizar frases, reconhecer entidades nomeadas (nomes de pessoas, locais, etc), analisar sentimento em frases, etc.

Onde está sendo usado: Desconhecido.

Licença: GPL v3 ou posterior.

Desenvolvido com: Java 1.8+.

URL do Projeto: http://stanfordnlp.github.io/CoreNLP/

Planejamento Probabilístico

RDDLSim

Descrição: Simulador de Processos de Decisão Markovianos (do inglês, Markov Decision Processes – MDPs). Além de ser um simulador, o RDDLSim disponibiliza um framework de desenvolvimento que permite a estudantes e pesquisadores implementarem suas próprias soluções de MDPs para rodar sobre o simulador.

Onde está sendo usado: Usado em universidades do mundo inteiro (inclusive na USP). Também foi utilizado nas últimas competições internacionais de planejamento probabilístico da ICAPS (2011, 2014 e 2015).

Licença: GPL v3 (mas possui algumas bibliotecas sob outros licenciamentos).

Desenvolvido com: Java.

URL do Projeto: https://github.com/ssanner/rddlsim

Representação de Conhecimento e Ontologias

Open Semantic Framework

open_semantic_framework

Descrição: Open Semantic Framework (OSF) é um conjunto de ferramentas para representação de conhecimento. Se baseia em ferramentas já existentes como Virtuoso (RDF), Solr (Busca), OWL API (ontologias) e GATE (tagging e processamento de linguagem natural). OSF funciona como um integrador dessas tecnologias adicionando componentes próprios.

Onde está sendo usado: Desconhecido.

Licença: Apache v2.

Desenvolvido com: PHP e Drupal.

URL do Projeto: http://opensemanticframework.org/

Protégé

selecao_003

Descrição: Uma suíte de ferramentas para construir modelos de domínios e aplicações baseadas em conhecimento com ontologias.

Onde está sendo usado: Em universidades, para auxiliar no estudo de ontologias.

Licença: BSD.

Desenvolvido com: Java.

URL do Projeto: https://github.com/protegeproject

Existem muitos projetos de software livre voltados para IA e muitas pessoas envolvidas nesse tipo de projeto. Caso a sua área de interesse não tenha sido listada aqui, não deixe de pesquisar, deve existir algum. Espero que tenham gostado do levantamento e eu gostaria de agradecer a todos que continuam visitando o blog, mesmo com eu tendo atualizado tão pouco. Peço também aos que gostam dos textos, que sigam o blog. É muito motivador ter muitas visitas e novos seguidores. Até o próximo texto! Abraços!

Referências

  1. Sites mencionados em cada projeto;
  2. Software Livre: Potencialidades e Modelos de Negócio – Taurion, C.
Anúncios