
Ich habe eine Liste mit Wörtern gefunden, /usr/share/dict/words
weiß aber nicht, ob es eine Möglichkeit gibt (eine bereits vorhandene Möglichkeit?), sie in die entsprechenden Wortarten aufzuteilen. Alternativ bin ich mit allen anderen Vorschlägen zufrieden, /usr/share/dict/words
war nur die erste Liste mit Wörtern, die ich gefunden habe.
Antwort1
Sie können eine Wörterbuch-API verwenden. Ich habe mich für einen kostenlosen Nutzungstoken für die dictionaryapi.com-API von Merriam-Webster angemeldet.
Dann können Sie zufällige Wörter aus der /usr/share/dict/words
Datei abrufen (Hinweis: Unter macOS sind viele der Wörter in dieser Datei keine echten Wörter, zumindest keine englischen Wörter). Da die Datei keine nützlichen Informationen über das Wort enthält, müssen Sie es mithilfe der API nachschlagen, um herauszufinden, ob es sich um ein Adjektiv oder ein Substantiv handelt.
#!/bin/bash
token=get-your-own-token
until [[ $fl == noun || $fl == adjective ]]; do
word=$(sort -R /usr/share/dict/words | tail -1)
fl=$(curl -s "https://www.dictionaryapi.com/api/v3/references/collegiate/json/${word}?key=$token" | jq -r .[].fl 2>/dev/null)
done
echo "Word is: $word"
Dies ist wirklich langsam (das Abrufen zufälliger Wörter aus der riesigen Diktierdatei auf dem Mac, nicht aus der API selbst), da normalerweise mehrere Wörter gefunden werden müssen, bevor ein echtes Wort gefunden wird, das ein Substantiv oder Adjektiv ist. Außerdem prüfen wir in diesem Code nur, welcher Wortart die erste Definition jedes Wortes angehört. Daher ist es möglich, dass ein Wort als Adjektiv oder Substantiv verwendet werden könnte, aber übersprungen wird, da die erste Definition des Wortes nicht so verwendet wird.
Letztendlich tut es zwar, was Sie suchen, aber nicht gut.
Antwort2
Es ist wahrscheinlich besser, von Anfang an eine taxonomisch korrekte Liste von Wörtern zu erhalten, als zu versuchen, die vorhandene Liste zu klassifizieren, da Leute, die „sich auskennen“, die Arbeit bereits erledigt haben.
Hier sind einige vonWortnetzbereits als Verben, Adjektive und Substantive usw. klassifiziert, obwohl sie Partizipien, Konjunktionen usw. usw. nicht zu umfassen scheinen.
Die Substantive n
, Verben v
, Adverbien r
und Adjektive a
stehen alle in den Indexdateien mit dem Kennbuchstaben im zweiten Feld und können daher mit ein wenig extrahiert awk
, durchgeleitet shuf
und zufällig angeordnet und in eine Datei umgeleitet werden.
awk '{ if ( $2 ~ "^[nvar]$") print $1" " $2 } ' index.* | shuf > mylist
Sie erhalten eine Datei mit 155.339 Wörtern.
Danach können Sie entweder eine zufällige Zeilennummer auswählen oder am einfachsten einfach shuf
die Datei und jedes Mal Zeile 1 auswählen
shuf -n 1 mylist
Das gibt Ihnen das Wort und die Klasse
shuf -n 10 mylist
coolness n
coefficient_of_elasticity n
naive_realism n
flying_mare n
nut_bar n
santiago_de_chile n
turkmen a
fore-and-aft_topsail n
robert_gray n
follow_suit v
Einige Einträge verwenden „_“ statt eines Leerzeichens. Wenn dies anstößig ist, müssen Sie es entfernen.
Um sie getrennt zu halten …
awk '{ if ( $2 ~ "^[nvar]$" ) {print $1 > "my"$2}} ' index.*
Und Ihre Zufallswortfunktion könnte einfach sein
shuf -n 1 my$1
Dabei übergeben Sie die Klasse als Argument (n, v, a oder r) wie
randword n