任意の形容詞や名詞を取得するには?

任意の形容詞や名詞を取得するには?

単語リストを見つけ/usr/share/dict/wordsましたが、その単語をその品詞に分割する方法(すでに存在していますか?)があるかどうか疑問に思います。または他の提案も大丈夫です。/usr/share/dict/wordsこれは私が見つけた最初の単語のリストです。

答え1

Dictionary API を使用できます。私は Merriam Webster の Dictionaryapi.com API の無料使用トークンを登録しました。

その後、ファイルから任意の単語を取得できます/usr/share/dict/words。 macOSでは、このファイル内の多くの単語が実際に実際の単語ではないか、少なくとも英語の単語ではありません。ファイルには単語に関する有用な情報が含まれていないため、APIを使用してファイルを検索して形容詞か名詞であるかどうかを確認する必要があります。

#!/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"

これは、実際の単語を探して名詞や形容詞になる前に通常複数の単語を見つける必要があるため、非常に遅いです(API自体ではなく、Macの巨大なdictファイルからランダムな単語を取得します)。また、このコードでは、各単語の最初の定義は品詞の一部ですが、見ているので、単語は形容詞または名詞として使用できますが、その単語の最初の定義ではないためスキップします。単語が使用されます。

最終的には好きなように動作しますが、それほど良くはありません。

答え2

「知っている人」がすでにその仕事をしているので、あなたが持っているリストを分類しようとするよりも、分類学的に正しい単語のリストから始める方が良いでしょう。

以下は一部です。ワードネットワーク動詞、形容詞、名詞などに分類されているが、噴射、接続詞などは含まれていないようである。

名詞n、動詞v、副詞、r形容詞はaすべてインデックスファイルにあり、2番目のフィールドには識別文字があるため、ビットで抽​​出してランダムに渡してawkファイルshufにリダイレクトできます。

awk '{ if ( $2 ~ "^[nvar]$")  print $1" " $2 } ' index.* | shuf > mylist

これにより、155,339 個の単語を含むファイルが提供されます。

その後、任意の行番号を選択するか、最も簡単にshufファイルを選択し、毎回行1を選択できます。

shuf -n 1 mylist

これにより、単語とカテゴリが提供されます。

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

一部の項目にはスペースの代わりに「_」が使用されるため、不快な場合は削除する必要があります。

二人を離そうとして...

awk '{ if ( $2 ~ "^[nvar]$" )  {print $1 > "my"$2}} ' index.*

任意の単語機能は次のようになります。

shuf -n 1 my$1

クラスをパラメータ(n、v、a、またはr)に渡す場合。

randword n

関連情報