脚本
Les Scripts Chinois
Ces divers scripts en dessous sont créé et utilisé au fur et à mesure que le projet avançait.
Avant tout
Comment est crée le site ?
On est bien heureux de pouvoir employer les connaissances qu'on a apprises pendant les cours. Cette série de sites est basée sur html5, aussi sur css3 et bootstrap. Aussi, les fonts Google sont utilisées pour les rendre plus beaux par le style de la police d'écriture. Pour la couleur, nous avons décidé de choisir noir, blanc et jaune, qui correspondent bien à notre sujet (noir abandonné parce que c'est désagréable pour l'affichage). JavaScript est aussi employé pour dynamiser les transitions et designs. Nous avons ajouté le "highlight.js" pour rendre les scripts plus clairs. La création des sites est vraiment difficile mais elle vaut la peine. 😃
Script créant les fichiers du corpus
dumps_asp_conc_cont_ch.sh, basé sur les scripts montrés par les professeurs, ce script est crée et combiné par Xiaohua. C'est le script pour créer le corpus de notre analyse.
Avec ce script, le seul argument attendu est le fichier urls.
On peut ainsi créer les fichiers dumps-text, aspirations, contextes, cooccurrences et les mettre dans le dossier correspondant.
La base de notre analyse est ainsi construite.
#!/usr/bin/env bash
fichier_urls=$1
lignenum=1;
cible="种族歧视"
while read URL || [[ -n $URL ]];
do
echo "fichier $lignenum est en cours de traitement."
curl -o ../../aspirations/chinois/ch-$lignenum.html $URL
w3m $URL > ../../dumps-text/chinois/ch-$lignenum.txt
grep -E -A3 -B3 $cible ../../dumps-text/chinois/ch-$lignenum.txt > ../../contexte/chinois/ch-$lignenum.txt
echo "
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Concordances</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">
</head>
<body>
<table class="table">
<thead>
<tr>
<th class=\"has-text-right\">Contexte gauche</th>
<th>Cible</th>
<th class=\"has-text-left\">Contexte droit</th>
</tr>
</thead>
<tbody>
" > ../../concordances/chinois/concordance_ch-$lignenum.html
w3m -cookie $URL | grep -E -o "(\w+|\W+){0,10}$cible(\W+|\w+){0,10}" |sort|uniq | sed -E "s/(.*)($cible)(.*)/<tr><td class="has-text-right">\1<\/td><td class="has-text-centered"><strong>\2<\/strong><\/td><td class="has-text-left">\3<\/td><\/tr>/" >> ../../concordances/chinois/concordance_ch-$lignenum.html
echo "
</tbody>
</table>
</body>
</html>
" >> ../../concordances/chinois/concordance_ch-$lignenum.html
lignenum=$((lignenum+1));
done < $fichier_urls
exit
Script créant le tableau
C'est le script pour créer le tableau.
Avec ce script, on obtiendra des infos utiles concernant les urls, leur contenu, y compris les occurrences du mot cible, ses concordances, son contexte etc...
la commande curl correspond aux fichiers aspirés, lynx aux dumps-texts, et w3m pour obtenir les dumps-texts chinois. On a aussi utilisé fréquemment le tube de linux pour transporter les contenus.
Enfin, on affichera tout ce qu'on a obtenu dans le tableau de style très simple, qui contiendra 9 colonnes et ainsi ceux qu'on a obtenu par ce script.
#!/usr/bin/env bash
fichier_urls=$1
fichier_tableau=$2
if [[ $# -ne 2 ]]
then
echo "Ce programme demande exactement deux arguments."
exit
fi
mot="种族歧视" # 关键词
echo $fichier_urls;
basename=$(basename -s .txt $fichier_urls)
echo "
<html>
<body>" > $fichier_tableau
echo "<h2>Tableau $basename :</h2>" >> $fichier_tableau
echo "<br></br>" >> $fichier_tableau
echo "<table>" >> $fichier_tableau
echo "<tr>
<th>ligne</th>
<th>code</th>
<th>URL</th>
<th>Encodage</th>
<th>Occurences</th>
<th>DumpText</th>
<th>HTML</th>
<th>Contexte</th>
<th>Concordances</th>
</tr>" >> $fichier_tableau
lignenum=1;
while read -r URL || [[ -n ${URL} ]]; do
code=$(curl -ILs $URL | grep -e "^HTTP/" | grep -Eo "[0-9]{3}" | tail -n 1)
charset=$(curl -Ls $URL | grep -Eo "charset=(\w|-)+" |tail | cut -d= -f2 |tail -n 1)
Occurences=$(w3m -cookie $URL | egrep "种族歧视" -wc)
echo -e "\tURL : $URL";
echo -e "\tcode : $code";
if [[ ! $charset ]]
then
echo -e "\tencodage non détecté, on prendra UTF-8 par défaut.";
charset="UTF-8";
else
echo -e "\tencodage : $charset";
fi
if [[ $code -eq 200 ]]
then
dump=$(lynx -dump -nolist -assume_charset=$charset -display_charset=$charset $URL)
if [[ $charset -ne "UTF-8" && -n "$dump" ]] #command1 && command2 只有前面命令执行成功,后面命令才继续执行 -n 表示if [ -n str1 ] 当串的长度大于0时为真(串非空)
then
dump=$(echo $dump | iconv -f $charset -t UTF-8//IGNORE) #也就是说,如果检查出其编码信息不为空,且不等于utf8时,就要把它转成utf8
fi
else
echo -e "\tcode différent de 200 utilisation d'un dump vide"
dump=""
charset=""
fi
echo "<tr>
<td>$lignenum</td>
<td>$code</td>
<td><a href=\"$URL\">$URL</a></td>
<td>$charset</td><td>$Occurences</td>
<td><a href=\"../dumps-text/ch-$lignenum.txt\">text</a></td>
<td><a href=\"../aspirations/ch-$lignenum.html\">html</a></td>
<td><a href=\"../contextes/ch-$lignenum.txt\">contexte</a></td>
<td><a href=\"../concordances/concordance_ch-$lignenum.html\">concordance</a></td>
</tr>" >> $fichier_tableau
echo -e "\t----------------------------------------------------------------"
lignenum=$((lignenum+1));
done < $fichier_urls
echo "</table>" >> $fichier_tableau
echo "</body></html>" >> $fichier_tableau
Script concaténant les dumps text
Après avoir obtenu tant de fichiers text, il faut les concaténer dans un seul fichier, tout en insérant les délimiteurs comme <page="ch-24">.
Il suffit d'employer des connaissances de bash et de shell qu'on a appris en cours pour réaliser cela.
#!/usr/bin/zsh
if [[ $# -ne 2 ]]
then
echo "Deux arguments attendus: <dossier> <langue>"
exit
fi
dossier=$1
langue_abr=$2
echo "<lang=\"$langue_abr\">" > contexte.txt
for filepath in $(ls -Utr $dossier/$langue_abr-*.txt)
do
# filepath == dumps-text/fr-1.txt
# == > pagename =fr-1
echo "$filepath"
pagename="$(basename -s .txt $filepath)" #ch-1
echo "<page=\"$pagename\">" >> contexte.txt
echo "<text>" >> contexte.txt
#on récupère les dumps ou contextes
# et on écrit à l'intérieur de la base text
content=$(cat $filepath)
# ordre important : & en premier
# sinon : < => < ; => <:
content=$(echo "$content" | sed 's/&/&/g')
content=$(echo "$content" | sed 's/</</g')
content=$(echo "$content" | sed 's/>/>/g')
echo "$content" >> contexte.txt
echo "</text>" >> contexte.txt
echo "</page> §" >> contexte.txt
done
echo "</lang>" >> contexte.txt
Script créant le corpus iTrameur
C'est le script le plus difficile pour moi. Je l'utilisais pour créer le fichier txt avec des mots segmentés et pertinents.
Basé sur le "contexte.txt" déjà crée, il faut aussi segmenter son contenu parce qu'il n'y a pas d'espace entre chaque mot chinois dans une phrase. Donc j'ai utilisé jieba, qui est un set de fonctions qui nous permet de segmenter les textes en chinois. J'ai utilisé le mode normal pour ne pas créer des mots redondants.
Mais là j'ai eu un problème que je n'arrive toujours pas à résoudre. Avec jieba, on segmente aussi les délimiteurs. Avec jieba.load_userdict('userdict.txt') je n'arrive pas non plus à garder les délimiteurs, parce que jieba n'accepte pas les crochets pointus, j'ai donc cherché sur Internet et j'ai modifié les codes source de jieba, enfin les délimiteurs sont gardés. Mais les stopwords existent encore ❗❗❗ J'ai donc dû corriger manuellement les délimiteurs. Heureusement cela ne m'a pas pris beaucoup de temps.
Mais grâce à ce script, les contenus dans context.txt sont annotés avec les délimiteurs suggérés dans le site officiel d'iTrameur, et le contenu est assez nettoyé.
Nous pouvons ainsi utiliser le fichier sans délimiteurs pour la création des nuages de mots. ☁️
import jieba
#jieba.load_userdict('userdict.txt') mais marche pas
def stopwordslist(filepath):
stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]
return stopwords
# pour segmenter
def seg_sentence(sentence):
sentence_seged = jieba.cut(sentence.strip())
stopwords = stopwordslist('stop_words.txt')
outstr = ''
for word in sentence_seged:
if word not in stopwords:
if word != '\t':
outstr += word
outstr += " "
return outstr
# enfin
inputs = open('dumps.txt', 'r', encoding='utf-8')
outputs = open('corpus-ch_itrameur_final.txt', 'w')
for line in inputs:
line_seg = seg_sentence(line)
outputs.write(line_seg + '\n')
outputs.close()
inputs.close()
Script - Nuages des mots ☁️
C'est le script qui segmente les mots chinois, et ensuite qui crée l'image nuage de mots.
Toujours avec jieba, nous pouvons créer le nuage des mots avec wordcloud. Ayant maitrisé les commandes de base de wordcloud, j'ai imité les codes d'autrui pour ajouter des couleurs et avoir de belles fonts.
J'ai aussi créé un set de STOPWORDS ⛔️, qui contient tous les mots ou lettres qu'on ne veut pas afficher dans l'image.
import jieba
import matplotlib.pyplot as plt
from imageio import imread
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import numpy as np
from PIL import Image
text_from_file = open('dumps.txt', 'r', encoding='UTF-8')
data = text_from_file.read()
seg_list = jieba.cut(data, cut_all=False)
fW = open('dumps-ch_token.txt', 'w', encoding='UTF-8')
word_space = ' '.join(seg_list)
fW.write(word_space)
text_from_file.close()
fW.close()
STOPWORDS = set((
"En", "ch", "text", "ais", "svg", "Fran", "text", "page", "text page", "b", "v2",
"他", "看", "就", "以及", "其", "吗", "进行", "是", "用", "也", "的",
"年", "了", "日", "月", "年", "都", "有", "你", "和", "我", "但", "而", "中", "不", "上", "这", "在", "到", "为", "与", "说", "对", "但是", "从", "会", "还", "将", "很", "让 ", " 让", "或", "等", "要", "来", "就是", "一种", "时", "并", "她", "表示", "一些", "这个", "又", "后", "以为", "以", "让",
"通过", "者", "不是", "分享", "比", "里", "去", "所以", "向", "那", "那么", "广告", "或者", "应该", "一定", "一", "则", "I", "and", "已", "己", "什么", "才", "过", "设计", "因", "着因",
"of", "the", "文章", "to", "认为", "时候", "它", "其中", "着", "方面", "所有", "没有", "之后", "已经", "前", "给", "这是", "这样", "开始", "一样", "指出", "该", "地", "这些", "需要", "曾", "现在", "地方", "好", "由", "像", "这是", "给", "特别", "作为", "当", "甚至", "个", "下", "最后", "包括", "如果", "发生", "最", "还是", "可以", "把", "时间", "不能", "却", "成为", "继续", "跟", "对于", "高", "当"
"其实", "们", "来自", "一个", "可能", "觉得", "这种", "比如", "因为", "相关", "因此", "看到", "只是", "有关", "最近", "一直", "万", "一名", "仍", "及", "再", "您", "多", "导致", "想", "所", "非常", "Espa", "不要", "无法", "情况", "地位", "ol", "为了", "如何", "其他", "那些", "虽然", "为什么", "为了", "有人", "这一", "出", "一位", "很多", "主要", "", "",
))
img = imread('poing.png')
img = np.array(Image.open('poing.png'))
my_wordcloud = WordCloud(
scale=6,
background_color='white', # 设置背景颜色
mask=img, # 背景图片
max_words=200, # 最大显示的词数
stopwords=STOPWORDS, # 停用词
font_path='alima.ttf',
max_font_size=150, # 设置字体最大值
random_state=50,
).generate(word_space)
image_colors = ImageColorGenerator(img)
my_wordcloud.recolor(color_func=image_colors)
plt.imshow(my_wordcloud)
plt.axis('off')
plt.show()
my_wordcloud.to_file('result.jpg')
🌏 Sites et Bibliographie
Les sites auxquels j'ai fait référence. Concernant les connaissances CSS, html etc
https://developer.mozilla.org/en-US/docs/Web/CSS
https://blog.51cto.com/mouday/4838897
https://getbootstrap.com/
https://highlightjs.org/
https://github.com/highlightjs/highlight.js
https://juejin.cn/post/6844904155148976142
https://github.com/goto456/stopwords/blob/master/baidu_stopwords.txt
https://www.zhangxinxu.com/wordpress/2021/05/css-html-hr/
https://huaweicloud.csdn.net/63806d62dacf622b8df880ac.html?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-2-121707533-blog-104723228.pc_relevant_3mothn_strategy_and_data_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-2-121707533-blog-104723228.pc_relevant_3mothn_strategy_and_data_recovery&utm_relevant_index=5
https://www.v2ex.com/t/186829
https://getbootstrap.com/docs/5.3/getting-started/
📷 D'où viennent les images
merciiiiii😋
https://www.licra.org/loi-contre-le-racisme-anti-asiatique-aux-etats-unis
https://w.wallhaven.cc/full/1p/wallhaven-1p35kv.png
https://www.yesmagazine.org/social-justice/2020/10/08/poc-bipoc-or-neither
https://actualitte.com/article/101971/international/etats-unis-la-theorie-critique-de-la-race-se-heurte-a-la-censure
https://www.crisconsortium.org/challenging-racisms/mapping-anti-racism
https://unsplash.com/fr/photos/ZIKnVsJVJpg?utm_source=unsplash&utm_medium=referral&utm_content=creditShareLink
https://media.giphy.com/media/p6qWfRJ4RxltUEmrl9/giphy.gif
https://media.giphy.com/media/toXKzaJP3WIgM/giphy.gif
https://images.wallpapersden.com/image/download/programming-coding-language_bGhpbm6UmZqaraWkpJRqZmdlrWdtbWU.jpg
https://media.giphy.com/media/S8lB8ff7GtCuc/giphy.gif
Script créant les fichiers du corpus
dumps_asp_conc_cont_ch.sh, basé sur les scripts montrés par les professeurs, ce script est crée et combiné par Xiaohua. C'est le script pour créer le corpus de notre analyse.
Avec ce script, le seul argument attendu est le fichier urls. On peut ainsi créer les fichiers dumps-text, aspirations, contextes, cooccurrences et les mettre dans le dossier correspondant.
La base de notre analyse est ainsi construite.
#!/usr/bin/env bash
fichier_urls=$1
lignenum=1;
cible="种族歧视"
while read URL || [[ -n $URL ]];
do
echo "fichier $lignenum est en cours de traitement."
curl -o ../../aspirations/chinois/ch-$lignenum.html $URL
w3m $URL > ../../dumps-text/chinois/ch-$lignenum.txt
grep -E -A3 -B3 $cible ../../dumps-text/chinois/ch-$lignenum.txt > ../../contexte/chinois/ch-$lignenum.txt
echo "
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Concordances</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">
</head>
<body>
<table class="table">
<thead>
<tr>
<th class=\"has-text-right\">Contexte gauche</th>
<th>Cible</th>
<th class=\"has-text-left\">Contexte droit</th>
</tr>
</thead>
<tbody>
" > ../../concordances/chinois/concordance_ch-$lignenum.html
w3m -cookie $URL | grep -E -o "(\w+|\W+){0,10}$cible(\W+|\w+){0,10}" |sort|uniq | sed -E "s/(.*)($cible)(.*)/<tr><td class="has-text-right">\1<\/td><td class="has-text-centered"><strong>\2<\/strong><\/td><td class="has-text-left">\3<\/td><\/tr>/" >> ../../concordances/chinois/concordance_ch-$lignenum.html
echo "
</tbody>
</table>
</body>
</html>
" >> ../../concordances/chinois/concordance_ch-$lignenum.html
lignenum=$((lignenum+1));
done < $fichier_urls
exit
Script créant le tableau
C'est le script pour créer le tableau.
Avec ce script, on obtiendra des infos utiles concernant les urls, leur contenu, y compris les occurrences du mot cible, ses concordances, son contexte etc...
la commande curl correspond aux fichiers aspirés, lynx aux dumps-texts, et w3m pour obtenir les dumps-texts chinois. On a aussi utilisé fréquemment le tube de linux pour transporter les contenus.
Enfin, on affichera tout ce qu'on a obtenu dans le tableau de style très simple, qui contiendra 9 colonnes et ainsi ceux qu'on a obtenu par ce script.
#!/usr/bin/env bash
fichier_urls=$1
fichier_tableau=$2
if [[ $# -ne 2 ]]
then
echo "Ce programme demande exactement deux arguments."
exit
fi
mot="种族歧视" # 关键词
echo $fichier_urls;
basename=$(basename -s .txt $fichier_urls)
echo "
<html>
<body>" > $fichier_tableau
echo "<h2>Tableau $basename :</h2>" >> $fichier_tableau
echo "<br></br>" >> $fichier_tableau
echo "<table>" >> $fichier_tableau
echo "<tr>
<th>ligne</th>
<th>code</th>
<th>URL</th>
<th>Encodage</th>
<th>Occurences</th>
<th>DumpText</th>
<th>HTML</th>
<th>Contexte</th>
<th>Concordances</th>
</tr>" >> $fichier_tableau
lignenum=1;
while read -r URL || [[ -n ${URL} ]]; do
code=$(curl -ILs $URL | grep -e "^HTTP/" | grep -Eo "[0-9]{3}" | tail -n 1)
charset=$(curl -Ls $URL | grep -Eo "charset=(\w|-)+" |tail | cut -d= -f2 |tail -n 1)
Occurences=$(w3m -cookie $URL | egrep "种族歧视" -wc)
echo -e "\tURL : $URL";
echo -e "\tcode : $code";
if [[ ! $charset ]]
then
echo -e "\tencodage non détecté, on prendra UTF-8 par défaut.";
charset="UTF-8";
else
echo -e "\tencodage : $charset";
fi
if [[ $code -eq 200 ]]
then
dump=$(lynx -dump -nolist -assume_charset=$charset -display_charset=$charset $URL)
if [[ $charset -ne "UTF-8" && -n "$dump" ]] #command1 && command2 只有前面命令执行成功,后面命令才继续执行 -n 表示if [ -n str1 ] 当串的长度大于0时为真(串非空)
then
dump=$(echo $dump | iconv -f $charset -t UTF-8//IGNORE) #也就是说,如果检查出其编码信息不为空,且不等于utf8时,就要把它转成utf8
fi
else
echo -e "\tcode différent de 200 utilisation d'un dump vide"
dump=""
charset=""
fi
echo "<tr>
<td>$lignenum</td>
<td>$code</td>
<td><a href=\"$URL\">$URL</a></td>
<td>$charset</td><td>$Occurences</td>
<td><a href=\"../dumps-text/ch-$lignenum.txt\">text</a></td>
<td><a href=\"../aspirations/ch-$lignenum.html\">html</a></td>
<td><a href=\"../contextes/ch-$lignenum.txt\">contexte</a></td>
<td><a href=\"../concordances/concordance_ch-$lignenum.html\">concordance</a></td>
</tr>" >> $fichier_tableau
echo -e "\t----------------------------------------------------------------"
lignenum=$((lignenum+1));
done < $fichier_urls
echo "</table>" >> $fichier_tableau
echo "</body></html>" >> $fichier_tableau
Script concaténant les dumps text
Après avoir obtenu tant de fichiers text, il faut les concaténer dans un seul fichier, tout en insérant les délimiteurs comme <page="ch-24">.
Il suffit d'employer des connaissances de bash et de shell qu'on a appris en cours pour réaliser cela.
#!/usr/bin/zsh
if [[ $# -ne 2 ]]
then
echo "Deux arguments attendus: <dossier> <langue>"
exit
fi
dossier=$1
langue_abr=$2
echo "<lang=\"$langue_abr\">" > contexte.txt
for filepath in $(ls -Utr $dossier/$langue_abr-*.txt)
do
# filepath == dumps-text/fr-1.txt
# == > pagename =fr-1
echo "$filepath"
pagename="$(basename -s .txt $filepath)" #ch-1
echo "<page=\"$pagename\">" >> contexte.txt
echo "<text>" >> contexte.txt
#on récupère les dumps ou contextes
# et on écrit à l'intérieur de la base text
content=$(cat $filepath)
# ordre important : & en premier
# sinon : < => < ; => <:
content=$(echo "$content" | sed 's/&/&/g')
content=$(echo "$content" | sed 's/</</g')
content=$(echo "$content" | sed 's/>/>/g')
echo "$content" >> contexte.txt
echo "</text>" >> contexte.txt
echo "</page> §" >> contexte.txt
done
echo "</lang>" >> contexte.txt
Script créant le corpus iTrameur
C'est le script le plus difficile pour moi. Je l'utilisais pour créer le fichier txt avec des mots segmentés et pertinents.
Basé sur le "contexte.txt" déjà crée, il faut aussi segmenter son contenu parce qu'il n'y a pas d'espace entre chaque mot chinois dans une phrase. Donc j'ai utilisé jieba, qui est un set de fonctions qui nous permet de segmenter les textes en chinois. J'ai utilisé le mode normal pour ne pas créer des mots redondants.
Mais là j'ai eu un problème que je n'arrive toujours pas à résoudre. Avec jieba, on segmente aussi les délimiteurs. Avec jieba.load_userdict('userdict.txt') je n'arrive pas non plus à garder les délimiteurs, parce que jieba n'accepte pas les crochets pointus, j'ai donc cherché sur Internet et j'ai modifié les codes source de jieba, enfin les délimiteurs sont gardés. Mais les stopwords existent encore ❗❗❗ J'ai donc dû corriger manuellement les délimiteurs. Heureusement cela ne m'a pas pris beaucoup de temps. Mais grâce à ce script, les contenus dans context.txt sont annotés avec les délimiteurs suggérés dans le site officiel d'iTrameur, et le contenu est assez nettoyé.
Nous pouvons ainsi utiliser le fichier sans délimiteurs pour la création des nuages de mots. ☁️
import jieba
#jieba.load_userdict('userdict.txt') mais marche pas
def stopwordslist(filepath):
stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]
return stopwords
# pour segmenter
def seg_sentence(sentence):
sentence_seged = jieba.cut(sentence.strip())
stopwords = stopwordslist('stop_words.txt')
outstr = ''
for word in sentence_seged:
if word not in stopwords:
if word != '\t':
outstr += word
outstr += " "
return outstr
# enfin
inputs = open('dumps.txt', 'r', encoding='utf-8')
outputs = open('corpus-ch_itrameur_final.txt', 'w')
for line in inputs:
line_seg = seg_sentence(line)
outputs.write(line_seg + '\n')
outputs.close()
inputs.close()
Script - Nuages des mots ☁️
C'est le script qui segmente les mots chinois, et ensuite qui crée l'image nuage de mots.
Toujours avec jieba, nous pouvons créer le nuage des mots avec wordcloud. Ayant maitrisé les commandes de base de wordcloud, j'ai imité les codes d'autrui pour ajouter des couleurs et avoir de belles fonts.
J'ai aussi créé un set de STOPWORDS ⛔️, qui contient tous les mots ou lettres qu'on ne veut pas afficher dans l'image.
import jieba
import matplotlib.pyplot as plt
from imageio import imread
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import numpy as np
from PIL import Image
text_from_file = open('dumps.txt', 'r', encoding='UTF-8')
data = text_from_file.read()
seg_list = jieba.cut(data, cut_all=False)
fW = open('dumps-ch_token.txt', 'w', encoding='UTF-8')
word_space = ' '.join(seg_list)
fW.write(word_space)
text_from_file.close()
fW.close()
STOPWORDS = set((
"En", "ch", "text", "ais", "svg", "Fran", "text", "page", "text page", "b", "v2",
"他", "看", "就", "以及", "其", "吗", "进行", "是", "用", "也", "的",
"年", "了", "日", "月", "年", "都", "有", "你", "和", "我", "但", "而", "中", "不", "上", "这", "在", "到", "为", "与", "说", "对", "但是", "从", "会", "还", "将", "很", "让 ", " 让", "或", "等", "要", "来", "就是", "一种", "时", "并", "她", "表示", "一些", "这个", "又", "后", "以为", "以", "让",
"通过", "者", "不是", "分享", "比", "里", "去", "所以", "向", "那", "那么", "广告", "或者", "应该", "一定", "一", "则", "I", "and", "已", "己", "什么", "才", "过", "设计", "因", "着因",
"of", "the", "文章", "to", "认为", "时候", "它", "其中", "着", "方面", "所有", "没有", "之后", "已经", "前", "给", "这是", "这样", "开始", "一样", "指出", "该", "地", "这些", "需要", "曾", "现在", "地方", "好", "由", "像", "这是", "给", "特别", "作为", "当", "甚至", "个", "下", "最后", "包括", "如果", "发生", "最", "还是", "可以", "把", "时间", "不能", "却", "成为", "继续", "跟", "对于", "高", "当"
"其实", "们", "来自", "一个", "可能", "觉得", "这种", "比如", "因为", "相关", "因此", "看到", "只是", "有关", "最近", "一直", "万", "一名", "仍", "及", "再", "您", "多", "导致", "想", "所", "非常", "Espa", "不要", "无法", "情况", "地位", "ol", "为了", "如何", "其他", "那些", "虽然", "为什么", "为了", "有人", "这一", "出", "一位", "很多", "主要", "", "",
))
img = imread('poing.png')
img = np.array(Image.open('poing.png'))
my_wordcloud = WordCloud(
scale=6,
background_color='white', # 设置背景颜色
mask=img, # 背景图片
max_words=200, # 最大显示的词数
stopwords=STOPWORDS, # 停用词
font_path='alima.ttf',
max_font_size=150, # 设置字体最大值
random_state=50,
).generate(word_space)
image_colors = ImageColorGenerator(img)
my_wordcloud.recolor(color_func=image_colors)
plt.imshow(my_wordcloud)
plt.axis('off')
plt.show()
my_wordcloud.to_file('result.jpg')
🌏 Sites et Bibliographie
Les sites auxquels j'ai fait référence. Concernant les connaissances CSS, html etc
https://developer.mozilla.org/en-US/docs/Web/CSS
https://blog.51cto.com/mouday/4838897
https://getbootstrap.com/
https://highlightjs.org/
https://github.com/highlightjs/highlight.js
https://juejin.cn/post/6844904155148976142
https://github.com/goto456/stopwords/blob/master/baidu_stopwords.txt
https://www.zhangxinxu.com/wordpress/2021/05/css-html-hr/
https://huaweicloud.csdn.net/63806d62dacf622b8df880ac.html?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-2-121707533-blog-104723228.pc_relevant_3mothn_strategy_and_data_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-2-121707533-blog-104723228.pc_relevant_3mothn_strategy_and_data_recovery&utm_relevant_index=5
https://www.v2ex.com/t/186829
https://getbootstrap.com/docs/5.3/getting-started/
📷 D'où viennent les images
merciiiiii😋
https://www.licra.org/loi-contre-le-racisme-anti-asiatique-aux-etats-unis
https://w.wallhaven.cc/full/1p/wallhaven-1p35kv.png
https://www.yesmagazine.org/social-justice/2020/10/08/poc-bipoc-or-neither
https://actualitte.com/article/101971/international/etats-unis-la-theorie-critique-de-la-race-se-heurte-a-la-censure
https://www.crisconsortium.org/challenging-racisms/mapping-anti-racism
https://unsplash.com/fr/photos/ZIKnVsJVJpg?utm_source=unsplash&utm_medium=referral&utm_content=creditShareLink
https://media.giphy.com/media/p6qWfRJ4RxltUEmrl9/giphy.gif
https://media.giphy.com/media/toXKzaJP3WIgM/giphy.gif
https://images.wallpapersden.com/image/download/programming-coding-language_bGhpbm6UmZqaraWkpJRqZmdlrWdtbWU.jpg
https://media.giphy.com/media/S8lB8ff7GtCuc/giphy.gif