Example query recieved by email:
Need a more convoluted way to say something’s convoluted?
synonyms convoluted:
synonyms convoluted - Wolfram|Alpha
Suppose I’m composing a tweet, the most useful synonym for a word would be the shortest. How do I sort the results by length? So far I’ve figured out that “character count” will tell me the length of an input string, but I haven’t figured out how to apply it to the results list of “synonyms convoluted”.
ccarter
(W. Craig Carter)
March 7, 2014, 8:04pm
2
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]]
Vitaliyk
(Vitaliy Kaurov)
March 8, 2014, 9:06am
3
There is also a nice example in documentation . It has combinatorial nature so I would not use it for too many words - you will need more time then.
Find the shortest versions of a phrase based on synonyms for its constituent words:
In
text = StringSplit["operational fracture conceptualization"]
Out
{"operational", "fracture", "conceptualization"}
In
Take[SortBy[StringJoin[Riffle[#, " "]] & /@
Tuples[WordData[#, "Synonyms", "List"] & /@ text], StringLength],3]
Out
{"usable break formulation", "usable crack formulation", "usable fault formulation"}
Vitaliyk
(Vitaliy Kaurov)
March 10, 2014, 4:12am
4