임의의 형용사 또는 명사를 얻는 방법은 무엇입니까?

임의의 형용사 또는 명사를 얻는 방법은 무엇입니까?

단어 목록을 찾았 /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모두 인덱스 파일에 있으며 두 번째 필드에는 식별 문자가 있으므로 비트로 추출하여 무작위로 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

관련 정보