4
$\begingroup$

I am trying to make a wordcloud from this txt file: https://ufile.io/dqhyd

Source: How to delete certain words from a word cloud in mathematica?

(**Create WordCloud**)

text = Import[FILEPATH];

(* get all words sepaerated in a list *)
words = StringSplit[text] // Flatten;
(* make all words lower case *)
wordLow = ToLowerCase[words];
(* delete stopwords, like "the", "and" etc. *)
wordDel = DeleteStopwords[wordLow];
(* delte all possible numbers *)
wordNoNumb = StringDelete[wordDel, DigitCharacter];
(* delte all possible "," *)
wordNoDot = StringDelete[wordDel, {",", ".", ":", " "}];

wordCloudIm = 
  WordCloud[wordNoDot, ScalingFunctions -> (#^.5 &), 
   Background -> White; ImageSize -> 2000, PlotTheme -> "Marketing"];

The output: enter image description here

As you can see there a lot of those undefined squares. How can I get rid of them ?

EDIT:

Here is the text file:

1.2 NOMBRE DE SOLUTIONS D'UN SYSTEME LINEAIRE
Dans la vidéo précédente, nous avons vu,
la définition d'un système d'équations linéaires,
à <i>n</i> inconnues, à coefficient réel.
Et nous avons vu, dans les exemples, au moins,
que ce qui semblait être correct,
c'était qu'un système d'équations comme ça,
possède ou bien une solution unique, comme deux droites qui se coupent une fois
ou bien qu'il n'y a pas de solution, comme deux droites qui sont parallèles,
ou bien comme dans le cas de plans, deux plans qui se coupent en une droite,
il y a une infinité de solutions.
J'aimerais vous démontrer ce théorème dans cette vidéo.
Donc le théorème, que nous allons démontrer :
en considérant un système d'équations linéaires,
aux inconnues <i>x₁,..., xₙ</i>, à coefficients réels.
Théorème :
Un système d'équation linéaire
à <i>n</i> inconnues,
à coefficient réel,
satisfait précisément une des conditions suivantes :
Le système ne possède aucune solution,
le système possède une solution unique,
ou bien le système possède une infinité de solutions.
Je vais démontrer ce théorème.
Ce qu'il faut remarquer, c'est que pour démontrer ce théorème,
il suffit de voir que si le système possède deux solutions distinctes,
alors il en possède une infinité.
Ok, alors je prends deux solutions distinctes du système.
Soient <i>(α₁, ..., αₙ)</i> et <i>(β₁, ..., βₙ)</i>,
deux solutions distinctes du système.
Cela signifie qu'en substituant <i>αᵢ</i> à la place de <i>xᵢ</i>,
dans toutes les équations du système, les égalités sont vérifiées.
Et la même chose est vraie pour <i>βᵢ</i>.
Je vais me concentrer sur une des équations.
Donc on considère,
l'équation
<i>aᵢ₁x₁ + aᵢ₂x₂ + ... + aₙ₁xₙ = bᵢ</i> Et j'ai mes deux solutions.
Donc je vais écrire les égalités que j'ai en sachant que :
<i>(α₁, ..., αₙ)</i> et <i>(β₁, ..., βₙ)</i> sont des solutions.
Donc on a :
<i>aᵢ₁α₁ + aᵢ₂α₂ + ... + aₙ₁αₙ = bᵢ</i>
<i>aᵢ₁α₁ + aᵢ₂α₂ + ... + aₙ₁αₙ = bᵢ</i>
<i>aᵢ₁α₁ + aᵢ₂α₂ + ... + aₙ₁αₙ = bᵢ</i>
<i>aᵢ₁α₁ + aᵢ₂α₂ + ... + aₙ₁αₙ = bᵢ</i>
Et puis la même chose est vraie si je substitue <i>β</i> au lieu de <i>α</i>, nous avons :
<i>aᵢ₁β₁ + aᵢ₂β₂ + ... + aₙ₁βₙ = bᵢ</i>
<i>aᵢ₁β₁ + aᵢ₂β₂ + ... + aₙ₁βₙ = bᵢ</i>
<i>aᵢ₁β₁ + aᵢ₂β₂ + ... + aₙ₁βₙ = bᵢ</i>
Comme j'ai ces deux égalités,
je peux soustraire l'une de l'autre.
C'est-à-dire je vais soustraire les côtés gauches et les côtés droits.
et j'obtiens une nouvelle égalité.
Donc, j'obtiens
<i>aᵢ₁(α₁ - β₁) + aᵢ₂(α₂ - β₂) + ... + aₙ₁(αₙ - βₙ) = bᵢ - bᵢ = 0.</i>
<i>aᵢ₁(α₁ - β₁) + aᵢ₂(α₂ - β₂) + ... + aₙ₁(αₙ - βₙ) = bᵢ - bᵢ = 0.</i>
Donc en particulier, ça veut dire que si je multiplie par <i>c</i>, pour tout nombre réel <i>c</i>,
le côté gauche et le côté droit, j'obtiens une nouvelle égalité,
<i>c·(aᵢ₁(α₁ - β₁) + aᵢ₂(α₂ - β₂) + ... + aₙ₁(αₙ - βₙ)) = 0.</i>
Donc j'ai soustrait les deux équations et puis j'obtiens cette nouvelle égalité.
Donc pour tout <i>c</i> dans <i>ℝ</i>,
on a cette fois l'égalité :
<i>c·aᵢ₁(α₁ - β₁) + c·aᵢ₂(α₂ - β₂) + ... + c·aₙ₁(αₙ - βₙ)) = 0.</i>
<i>c·aᵢ₁(α₁ - β₁) + c·aᵢ₂(α₂ - β₂) + ... + c·aₙ₁(αₙ - βₙ)) = 0.</i>
<i>c·aᵢ₁(α₁ - β₁) + c·aᵢ₂(α₂ - β₂) + ... + c·aₙ₁(αₙ - βₙ)) = 0.</i>
Maintenant, je n'ai pas encore utilisé le fait que <i>(α₁, ..., αₙ)</i>
et <i>(β₁, ..., βₙ)</i> sont des solutions distinctes,
donc maintenant je vais l'utiliser.
Comme <i>(α₁, ..., αₙ)</i> est différent de <i>(β₁, ..., βₙ)</i>,
il existe un nombre <i>j</i>,
entre <i>1</i> et <i>n</i>, avec :
<i>αⱼ</i> différent de <i>βⱼ</i>.
Donc ça veut dire que <i>αⱼ - βⱼ ≠ 0.</i>
Donc ça veut dire que pour
deux nombres réels <i>c</i> et <i>d</i> différents,
on a que <i>c(αⱼ - βⱼ) ≠ d(αⱼ - βⱼ)</i>.
on a que <i>c(αⱼ - βⱼ) ≠ d(αⱼ - βⱼ)</i>.
Ce qui veut aussi dire que
<i>αⱼ + c(αⱼ - βⱼ) ≠ αⱼ + d(αⱼ - βⱼ)</i>.
<i>αⱼ + c(αⱼ - βⱼ) ≠ αⱼ + d(αⱼ - βⱼ)</i>.
Maintenant tout ça c'est un petit raisonnement
On voit ne pas encore exactement à quoi ça sert. On va maintenant l'utiliser.
Donc, je vais reprendre deux des égalités que j'avais précédemment et vais les additionner.
Les deux que je vais additionner ce sont les égalités <i>*</i> et <i>**</i>
[voir écran]
[voir écran]
Donc je fais "<i>* + **</i>",
donc ça veut dire que j'additionne les côtés gauches et les côtés droits.
Et puis j'obtiens :
[voir écran]
[voir écran]
[voir écran]
[voir écran]
[voir écran]
[voir écran]
[voir écran]
[voir écran]
[voir écran]
[voir écran]
Donc, ça veut dire que
la suite de nombres réels : <i>α₁ + c(α₁ - β₁), ..., αₙ + c(αₙ - βₙ)</i>
<i>α₁ + c(α₁ - β₁), ..., αₙ + c(αₙ - βₙ)</i>.
satisfait l'équation originale.
Cette équation-là [voir écran]
Donc j'ai obtenu une nouvelle solution.
Donc,
<i>α₁ + c(α₁ - β₁), ..., αₙ + c(αₙ - βₙ)</i>,
est une solution.
Bon, est une solution de quoi ? C'est une solution de l'équation <i>aᵢ₁x₁ + aᵢ₂x₂ + ... + aₙ₁xₙ = bᵢ.</i>
Mais comme cette équation est satisfaite, c'est pareil pour les autres équations,
(i.e. l'indice <i>i</i> ne joue aucun rôle), l'expression qu'on a trouvé est une solution du système.
Et puis, par ce petit raisonnement là,
on voit que si je substitue dans notre nouvelle solution des valeurs différentes pour <i>c</i>,
donc avec <i>c</i> et <i>d</i> différents, alors j'obtiens des solutions distinctes.
Et comme je peux choisir n'importe quel nombre réel pour la constante <i>c</i>,
j'obtiens une infinité de solutions.
Donc, en prenant à chaque fois <i>c</i> dans <i>ℝ</i>, des valeurs différentes,
on obtient une infinité de solutions.
On a donc bien démontré le théorème.

EDIT2:

If I use:

wordCloudIm = 
  WordCloud[wordNoDot, ScalingFunctions -> (#^.5 &), 
   Background -> White; ImageSize -> 2000, PlotTheme -> "Marketing", 
   FontFamily -> "Source Code Pro"];

I get:

word cloud

I am using Windows 10, Mathematica 11.3.

$\endgroup$
  • 1
    $\begingroup$ It might be good to have the wordlist in your question. It looks to me like the font used to display the wordcloud hasn't implemented some of the characters in your data. $\endgroup$ – Carl Lange Oct 14 '18 at 8:33
  • $\begingroup$ @CarlLange Thank you very much for your comment. This is probably the reason, yes. I added the text as you requested to the question. Maybe, could you suggest me how to change the font? I think it should work with "DejaVue" $\endgroup$ – james Oct 14 '18 at 8:43
  • 1
    $\begingroup$ FontFamily will do it: WordCloud[wordNoDot, FontFamily -> "Source Code Pro"] $\endgroup$ – Carl Lange Oct 14 '18 at 9:22
  • $\begingroup$ @CarlLange Hmm, it does not work for me. Have a look at the updated question. Thanks. :) $\endgroup$ – james Oct 14 '18 at 9:39
  • 1
    $\begingroup$ I think I remember seeing an issue that windows cannot export certain characters to PDF correctly. Perhaps WordCloud is using this pipeline to convert text into graphics. Could you try ImportString[ExportString["c·aᵢ₁(α₁", "PDF"]] and see if you get a box? $\endgroup$ – Chip Hurst Oct 14 '18 at 14:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.