# How do find common keywords

**URL:** <https://community.parabola.io/t/how-do-find-common-keywords/561>\
**Category:** Ask a question\
**Created:** [May 21, 2020, 8:53am UTC](https://community.parabola.io/t/how-do-find-common-keywords/561 "2020-05-21T08:53:43Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![saad](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/saad/32/370_2.png) [@saad](https://community.parabola.io/u/saad)\
**Post date:** [May 21, 2020, 8:53am UTC](https://community.parabola.io/t/how-do-find-common-keywords/561/1 "2020-05-21T08:53:43Z")

</div>

I have a list of product titles (rows) I want to analyze. Is there a way to find common keywords between these rows?

Here is an example  
Row 1: iPhone XS Cover  
Row 2: Cover for iPhone S  
Row 3: Android Mobile Phone Cover

Is there a way I can find most common keywords among all rows? In this case result would be Cover - Count 3, iPhone - Count 2

---

<div class="post-metadata">

**Author:** ![brian](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/brian/32/11_2.png) [@brian](https://community.parabola.io/u/brian)\
**Post date:** [May 21, 2020, 4:42pm UTC](https://community.parabola.io/t/how-do-find-common-keywords/561/2 "2020-05-21T16:42:07Z")

</div>

Hey Saad!

How many rows do you have? If its not too many, you can use a Column Split, set to split into new ROWS, and set the delimiter to a space.

That will make 1 row per word.

Then you can use the Count Values to count the column of words, and it should give you a count of each word present!

But if you have a lot of rows to start, it will quickly become too many rows.

---

<div class="post-metadata">

**Author:** ![saad](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/saad/32/370_2.png) [@saad](https://community.parabola.io/u/saad)\
**Post date:** [May 21, 2020, 6:14pm UTC](https://community.parabola.io/t/how-do-find-common-keywords/561/3 "2020-05-21T18:14:53Z")

</div>

Brian, I just tried it and it works like it should but I’m not getting the results I was hoping for. I’m trying to analyze Product Titles on multiple stores and find products which are on multiple stores. When I break each product title in to multiple words, the data is gibberish at best. Is there any way to process this to find keywords instead of just words?

---

<div class="post-metadata">

**Author:** ![John\_Doe](https://avatars.discourse-cdn.com/v4/letter/j/91b2a8/32.png) [@John\_Doe](https://community.parabola.io/u/John_Doe)\
**Post date:** [May 21, 2020, 9:34pm UTC](https://community.parabola.io/t/how-do-find-common-keywords/561/4 "2020-05-21T21:34:02Z")

</div>

Hi saad - Brian may have a better answer since I’m just a Parabola user, but I wanted to make sure you are aware of the concept of “n-gram” analysis as it can be helpful when it comes to grouping words together for analysis.

I briefly searched and found this API endpoint which you may be able to use to turn your strings (e.g. “Android Mobile Phone Cover”) into n-grams (e.g. “Android Mobile”, “Mobile Phone”, “Phone Cover”, etc.) which you could then potentially use a similar process as Brian outlined to find the n-grams with the highest count.

> **[N-Gram and Word Counter API | RxNLP](https://rxnlp.com/api-reference/n-gram-and-word-counter-api-reference/#.XsbygURKikk)**
>
> The NGramCounter API generates word and n-grams counts based on large amounts of text provided with the desired n-gram size in any language. You can count frequencies of words (unigrams), bi-grams, tri-grams and etc.

---

<div class="post-metadata">

**Author:** ![brian](https://sea2.discourse-cdn.com/flex020/user_avatar/community.parabola.io/brian/32/11_2.png) [@brian](https://community.parabola.io/u/brian)\
**Post date:** [May 26, 2020, 6:07pm UTC](https://community.parabola.io/t/how-do-find-common-keywords/561/5 "2020-05-26T18:07:20Z")

</div>

@John_Doe is right - if you want to distinguish between “filler” words and “keywords”, n-grams are pretty much the route to take. You can use an API, or you can try to define rules in Parabola to omit some of the more common filler words.

It will be a tough process, though, and is certainly prone to inaccuracies and subjective results, so keep that in mind!
