logic programming - find synonyms of a given word

2021-04-09 Thread SideStep

Task is to write a program that can decide whether two words are synonyms 
or not. 

I have pairs of synonymous words, E.g.:

 [big large]  
 [large huge]  
 [small little] 

We can derive the synonymous relationship indirectly: if big is a synonym 
for large and large is a synonym for huge then big is a synonym for huge.
Being synonyms doesn’t depend on order, e.g. if big is a synonym for large 
then large is a synonym for big.

The program has to answer whether given two words are synonyms or not.

This seems to me as a good candidate for logic programming, e.g. with 
clojure.core.logic.

a. How to state the input pairs of synonyms as logical 
statements/constraints?
b. How to perform a query to find all synonyms of a given word?

Or perhaps I am yack shaving? What would be a simpler way to solve this?

This question is also on stackowerflow, if you want to get some points:

https://stackoverflow.com/questions/67002758/logic-programming-find-synonyms-of-a-given-word

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/0cd164b2-56eb-4e99-866d-b1f63522ac52n%40googlegroups.com.


Re: logic programming - find synonyms of a given word

2021-04-09 Thread Blake Watson
In practice I would probably just build a map, word : #setofsynonyms and
whenever a synonym was added [a b], I would add b to a's set and a to b's
set.

Or, even more likely, a vector, because "a" is probably a homonym (if we're
talking English) and if "a" is "bank", I need one set of synonyms for
"places to put your money" and another set for "the side of a river" and
another set for "to hit [an object] off a wall or other barrier". Unless
you have some other annotation besides the word so that you can distinguish
"bank[1]" from "bank[2]" and "bank[3]".

On Fri, Apr 9, 2021 at 7:32 AM SideStep  wrote:

>
> Task is to write a program that can decide whether two words are synonyms
> or not.
>
> I have pairs of synonymous words, E.g.:
>
>  [big large]
>  [large huge]
>  [small little]
>
> We can derive the synonymous relationship indirectly: if big is a synonym
> for large and large is a synonym for huge then big is a synonym for huge.
> Being synonyms doesn’t depend on order, e.g. if big is a synonym for large
> then large is a synonym for big.
>
> The program has to answer whether given two words are synonyms or not.
>
> This seems to me as a good candidate for logic programming, e.g. with
> clojure.core.logic.
>
> a. How to state the input pairs of synonyms as logical
> statements/constraints?
> b. How to perform a query to find all synonyms of a given word?
>
> Or perhaps I am yack shaving? What would be a simpler way to solve this?
>
> This question is also on stackowerflow, if you want to get some points:
>
>
> https://stackoverflow.com/questions/67002758/logic-programming-find-synonyms-of-a-given-word
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/clojure/0cd164b2-56eb-4e99-866d-b1f63522ac52n%40googlegroups.com
> 
> .
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/CAJAnwP%3DBZJ%2BeEoEeNv1Yg2eRbsHyVcY7OJm2YmvRLsZ2h8oioA%40mail.gmail.com.


Re: logic programming - find synonyms of a given word

2021-04-09 Thread Nesvarbu Nereikia
Thanks Blake, the map of sets was my first intuition too. But I don't think
we can derive that big is a synonym of huge from such an index. If you look
at the example input.

On Saturday, April 10, 2021, Blake Watson  wrote:

> In practice I would probably just build a map, word : #setofsynonyms and
> whenever a synonym was added [a b], I would add b to a's set and a to b's
> set.
>
> Or, even more likely, a vector, because "a" is probably a homonym (if
> we're talking English) and if "a" is "bank", I need one set of synonyms for
> "places to put your money" and another set for "the side of a river" and
> another set for "to hit [an object] off a wall or other barrier". Unless
> you have some other annotation besides the word so that you can distinguish
> "bank[1]" from "bank[2]" and "bank[3]".
>
> On Fri, Apr 9, 2021 at 7:32 AM SideStep  wrote:
>
>>
>> Task is to write a program that can decide whether two words are synonyms
>> or not.
>>
>> I have pairs of synonymous words, E.g.:
>>
>>  [big large]
>>  [large huge]
>>  [small little]
>>
>> We can derive the synonymous relationship indirectly: if big is a synonym
>> for large and large is a synonym for huge then big is a synonym for huge.
>> Being synonyms doesn’t depend on order, e.g. if big is a synonym for
>> large then large is a synonym for big.
>>
>> The program has to answer whether given two words are synonyms or not.
>>
>> This seems to me as a good candidate for logic programming, e.g. with
>> clojure.core.logic.
>>
>> a. How to state the input pairs of synonyms as logical
>> statements/constraints?
>> b. How to perform a query to find all synonyms of a given word?
>>
>> Or perhaps I am yack shaving? What would be a simpler way to solve this?
>>
>> This question is also on stackowerflow, if you want to get some points:
>>
>> https://stackoverflow.com/questions/67002758/logic-
>> programming-find-synonyms-of-a-given-word
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit https://groups.google.com/d/
>> msgid/clojure/0cd164b2-56eb-4e99-866d-b1f63522ac52n%40googlegroups.com
>> 
>> .
>>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "Clojure" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/clojure/ILpnkLhK0pM/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> clojure+unsubscr...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/clojure/CAJAnwP%3DBZJ%2BeEoEeNv1Yg2eRbsHyVcY7OJm2Ymv
> RLsZ2h8oioA%40mail.gmail.com
> 
> .
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/CAG-Cp9XqEJNF9egE-2kbcp1muO5_i97Re7AKAtwWR6v62PXzQA%40mail.gmail.com.