Here is a solution:
synonyms[word_] := Module[
{wordData , likeTypes},
wordData = WordData[word, "Synonyms"];
If[ Head[wordData] == WordData, Return[{word}]];
(*Print[wordData];*)
likeTypes = Flatten[Last /@ wordData];
If[Length[likeTypes] == 0 , Return[{word}]];
Union@likeTypes
] /; StringQ[word]
try this:
synonyms["face"]
or
synonyms[word_, type_] := Module[
{wordData = WordData[word, "Synonyms"], likeTypes},
likeTypes =
Union@Flatten[
Last /@ Select[wordData, MemberQ[First[#], type] &]]
] /; StringQ[word] && StringQ[type]
Then try,
synonyms["face", "Verb"]
so your shortest solutions would be something like this:
SortBy[synonyms["convoluted", "Adjective"], StringLength]
SortBy[synonyms["convoluted"], StringLength]
SortBy[synonyms["convoluted", "Noun"], StringLength]
or
First[SortBy[synonyms["convoluted", "Adjective"], StringLength]]