Vue d’ensemble
TextRank, dérivé de PageRank, est un modèle de classement orienté texte pour des graphs extraits de textes en langage naturel. Il peut être appliqué à diverses tâches de traitement du langage naturel, y compris l'extraction de mots-clés, l'extraction de phrases clés et la synthèse de textes.
- Mihalcea, R., Tarau, P., TextRank: Bringing Order Into Texts (2004)
Concepts
Texte comme un Graph
Pour permettre l'application de l'algorithme TextRank, un graph représentant le texte doit être construit. Selon l'application en question :
- Les unités textuelles qui définissent le mieux la tâche, telles que les mots, les collocations ou les phrases, sont ajoutées en tant que nodes dans le graph.
- Des relations, telles que la proximité sémantique, la cooccurrence ou le chevauchement contextuel, sont identifiées pour dessiner des edges entre les nodes.
Graphique d'exemple construit pour l'extraction de phrases clés : les nodes sont les unités lexicales sélectionnées du texte, et les relations sont établies par cooccurrence (Source : article original)
Modèle TextRank
Les rangs de toutes les unités textuelles sont calculés de façon récursive selon un mécanisme de "recommandation", tout comme l'algorithme PageRank. Cependant, TextRank prend en compte les poids des edges, donc une formule similaire est définie pour intégrer les poids des edges :
où,
- In(u) est l'ensemble des nodes pointant vers le node u ;
- Out(v) est l'ensemble des nodes pointant depuis le node v ;
- wvu est le poids de l'edge entre les nodes v et u ;
- d est le facteur d'amortissement.
Le rang (score) d'un node est déterminé en fonction des votes qui lui sont attribués, et du rang des nodes attribuant ces votes.
Considérations
- L'auto-boucle est considérée comme un successeur et un prédécesseur, un node passerait du rang à lui-même par auto-boucle. Si un réseau a de nombreuses auto-boucles, il faudra plus d'itérations pour converger.
Syntaxe
- Commande :
algo(text_rank)
- Paramètres :
Nom |
Type |
Spéc |
Défaut |
Optionnel |
Description |
---|---|---|---|---|---|
init_value | float | >0 | 0.2 |
Oui | Le même rang initial pour tous les nodes |
loop_num | int | ≥1 | 5 |
Oui | Nombre d'itérations |
damping | float | (0,1) | 0.8 |
Oui | Facteur d'amortissement |
max_change | float | (0,1) | 0.8 |
Oui | L'algorithme se termine lorsque le changement de rang pour chaque node est inférieur à max_change après une itération |
edge_schema_property | []@<schema>?.<property> |
Type numérique, doit être LTE | / | Non | Property(-ies) de l'edge à utiliser comme poids de bord, où les valeurs de plusieurs propriétés sont additionnées |
limit | int | ≥-1 | -1 |
Oui | Nombre de résultats à retourner, -1 pour retourner tous les résultats |
order | string | asc , desc |
/ | Oui | Trier les nodes par le rang |
Exemples
File Writeback
Spéc | Contenu |
---|---|
filename | _id ,degree |
Property Writeback
Spéc | Contenu | Écrire dans | Type de Donnée |
---|---|---|---|
property | rank |
Node property | string |
Direct Return
Ordinal d'Alias | Type | Description | Colonnes |
---|---|---|---|
0 | []perNode | Node et son rang | _uuid , rank |
Stream Return
Ordinal d'Alias | Type | Description | Colonnes |
---|---|---|---|
0 | []perNode | Node et son rang | _uuid , rank |