« Text mining avec R » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
Ligne 61 : Ligne 61 :
=== Exemple lecture de fichiers locaux ===
=== Exemple lecture de fichiers locaux ===


Pour lire un ensemble de fichier locaux, il conseille de les mettre dans un sous-répertoire d'un répertoire pour le text mining.
Pour lire un ensemble de fichier locaux,on conseille de les mettre dans un sous-répertoire d'un répertoire pour le text mining.


(1) Définissez le working directory
(1) Définissez le working directory
Ligne 68 : Ligne 68 :
getwd()
getwd()
[1] "C:/Users/dschneid/Documents"
[1] "C:/Users/dschneid/Documents"
# changer
# changer lr répertoire de travail
setwd "C:/dks/R"
setwd "C:/dks/R"
</source>
</source>


On peut utiliser la fonction ''file.path'' pour indiquer ou trouver les fichiers. Si sous Windows, les fichiers se trouvent dans <code>D:\data\exemples\txt</code>, utilisez du code comme <code>chemin <- file.path("d:", "data", "exemples", "txt") </code>. Pour indiquer un sous-répertoire du répertoire courant, utilise qc. comme <code>file.path (".", "textes")</code>.
On peut utiliser la fonction ''file.path'' pour indiquer ou trouver les fichiers. Si sous Windows, les fichiers se trouvent dans <code>D:\data\exemples\txt</code>, utilisez du code comme <code>chemin <- file.path("d:", "data", "exemples", "txt") </code>. Pour indiquer un sous-répertoire du répertoire courant, utilise qc. comme <code>file.path (".", "textes")</code>. Enfin, avec une syntaxe "Unix" cela marchera aussi: <code>D:/data/exemples/txt</code>


Comme exemple, je suggère d'utiliser le contenu de pages web. Le seul problème (on le verra plus tard) est qu'il faut nettoyer le contenu. Parfois il existe des API qui autorisent l'extraction de contenus de pages, un bon exemple est ce wiki:
Comme exemple, je suggère d'utiliser le contenu de pages web. Le seul problème (on le verra plus tard) est qu'il faut nettoyer le contenu. Parfois il existe des API qui autorisent l'extraction de contenus de pages, un bon exemple est ce wiki:
Ligne 81 : Ligne 81 :
Exemple: Contenu d'une page sous format XML (qu'il va aussi falloir nettoyer, mais moins)
Exemple: Contenu d'une page sous format XML (qu'il va aussi falloir nettoyer, mais moins)
  http://edutechwiki.unige.ch/fmediawiki/api.php?action=parse&page=Civilization&format=xml
  http://edutechwiki.unige.ch/fmediawiki/api.php?action=parse&page=Civilization&format=xml
=== Aspirer une page web ===


== Transformations ==
== Transformations ==

Version du 1 octobre 2014 à 11:08

Cet article est une ébauche à compléter. Une ébauche est une entrée ayant un contenu (très) maigre et qui a donc besoin d'un auteur.

Voir aussi:

Introduction

tm est le paquet "text mining" les plus populaire de R et il faut l'installer si nécessaire.

Pour l'utiliser: library(tm)

Importation de documents

Le paquet tm est conçu pour marcher avec une variété de formats: textes simples, articles/papiers en PDF ou Word, documents Web (HTML, XML, SGML), etc.

Les corpus

Le Corpus est la structure R qui représente une collection de documents que l'on veut analyser. Cette structure doit être construite en important des données et/ou en tapant des données.

Il existe 2 versions:

  • VCorpus (volatile, lorsqu'on arrête R, il faut la refaire ...
  • PCorpus (endroit unique où le corpus est stocké)

Pour construire un corpus, il faut donner deux arguments

  • Identifier un type de 'source de données: soit DataframeSource, DirSource, URISource, vectorSource ou XMLSource
  • Definir le reader, c-a-d. on manière dont le texte est lu avec readerControl, notamment readDOC, readPDF, readPlain, readXML, readTabular.

Demander à R des informations concernant le type de sources et de readers:

 getReaders() # affiche toute la liste de readers
 getSources() # affiche la liste des types de sources

Chaque source possède un lecteur (reader) par défaut. Par exemple pour DirSource, c'est readPlain.

Exemple lecture de fichiers textes du tutoriel officiel en format UTF-8

Ces fichiers se trouvent déjà dans l'installation de R, d'où l'utilisation de system.file

# Tester si un répertoire existe et retourner son nom complet
# Tester et stocker le nom d´un sous-répertoire tm/texts/txt dans votre bibliothèque système
txt <- system.file("texts", "txt", package = "tm")
# Charger le texte de chaque fichier
ovid <- VCorpus(DirSource(txt, encoding = "UTF-8"), readerControl = list(language = "lat"))

Inspection et utilisation de corpus

Pour vérifier les contenus on peut afficher le tout ou encore juste quelques éléments, par exemple:

# print a short overview
print(ovid)

# show all
inspect(ovid)
ovid

# display the second document
ovid[[2]]

Exemple lecture de fichiers locaux

Pour lire un ensemble de fichier locaux,on conseille de les mettre dans un sous-répertoire d'un répertoire pour le text mining.

(1) Définissez le working directory

# lister 
getwd()
[1] "C:/Users/dschneid/Documents"
# changer lr répertoire de travail
setwd "C:/dks/R"

On peut utiliser la fonction file.path pour indiquer ou trouver les fichiers. Si sous Windows, les fichiers se trouvent dans D:\data\exemples\txt, utilisez du code comme chemin <- file.path("d:", "data", "exemples", "txt") . Pour indiquer un sous-répertoire du répertoire courant, utilise qc. comme file.path (".", "textes"). Enfin, avec une syntaxe "Unix" cela marchera aussi: D:/data/exemples/txt

Comme exemple, je suggère d'utiliser le contenu de pages web. Le seul problème (on le verra plus tard) est qu'il faut nettoyer le contenu. Parfois il existe des API qui autorisent l'extraction de contenus de pages, un bon exemple est ce wiki:

Afficher l'API:

http://edutechwiki.unige.ch/fmediawiki/api.php

Exemple: Contenu d'une page sous format XML (qu'il va aussi falloir nettoyer, mais moins)

http://edutechwiki.unige.ch/fmediawiki/api.php?action=parse&page=Civilization&format=xml

Aspirer une page web

Transformations

stemDocument()

stripWhitespace()

tmTolower()

Méthodes d'analyse

.....


Exemple EduTechWiki

Cet exemple est directement inspiré par le billet Text mining in R – Automaticcategorization of Wikipedia articles de Norbert Ryciak.

Prérequis

Il faut avoir les librairies stringi, proxi et tm. Donc si nécessaire, il faut les installer. Par exemple, en ligne de commande:

install.packages("proxy")

Importer les documents

On peut directement importer des pages html (donc des pages wiki):

library(tm)
library(stringi)
library(proxy)
# le nom du wiki
wiki <- "http://edutechwiki.unige.ch/fr/"
# une liste de noms de pages
titles <- c("STIC:STIC_I_-_exercice_1_(Utopia)", "STIC:STIC I - exercice 1 (Nestor-Pixel)", 
            "STIC:STIC_I_-_exercice_2_(Utopia)",
            "STIC:STIC III (2012)/Module 1",  "STIC:STIC III (2012)/Module 2")

# un vecteur qui contient 5 strings vides ("")
articles <- character(length(titles))

# lecture des contenus des pages wiki. Chaque article se trouvera dans un des string ci-dessous.
for (i in 1:length(titles)) {
    articles[i] <- stri_flatten(readLines(stri_paste(wiki, titles[i])), col = "")
}

# Création d un corpus avec les articles
docs <- Corpus(VectorSource(articles))

Liens

  • Ingo Feiner (2014). Introduction to the tm Package Text Mining in R, http://cran.r-project.org/web/packages/tm/vignettes/tm.pdf
    • Official "vignette" (introductory text included with the package). Quote: “This vignette gives a short introduction to text mining in R utilizing the text mining framework provided by the tm package. We present methods for data import, corpus handling, preprocessing, metadata management, and creation of term-document matrices.”
  • Ingo Feinerer, Kurt Hornik, David Meyer (2008). Text Mining Infrastructure in R, Journal of Statistical software, Vol. 25, Issue 5, http://www.jstatsoft.org/v25/i05/ (open contents)
    • Article complet par les auteurs du package et qui introduit le paquet tm (version 2008). Il contient aussi des exemples.
  • Text mining with R (slides) by Aleksei Beloshytski
    • Montre (superficiellement) notamment comment analyser un blog, c'est à dire extraire les contenus, puis extraire les thèmes les plus populaires, clustering, etc.