Giter Site home page Giter Site logo

donatello-za / rake-php-plus Goto Github PK

View Code? Open in Web Editor NEW
256.0 6.0 48.0 220 KB

A keyword and phrase extraction library based on the Rapid Automatic Keyword Extraction algorithm (RAKE).

License: MIT License

PHP 100.00%
php keyword language stopwords extract phrases

rake-php-plus's People

Contributors

annevanderaar avatar donatello-za avatar levmv avatar orthosie avatar rhapt avatar spekulatius avatar thrashzone13 avatar xolf avatar xoshbin avatar yusufusta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

rake-php-plus's Issues

phrase gets split on '

When the text to be parsed includes a contraction the phrase returned is split on the apostrophe.

Example:
$text = "the rep doesn't really have anything to talk about"
returns
Array
(
[rep doesn] => 4
[talk] => 1
)

Stopwords not working properly for Kurdish

Hi, After merging my pull request I found out that the list not working properly as expected, For example this character '،' which it's the first line in the Kurdish list is not excluded when Im trying to extract a list of words from a paragraph, For example now that the Corona virus is a trend, in Kurdish for example this word "کۆرۆنا،" which means "Corona," the "،" character is supposed to be detached from the word, but it's not.
I hope I'm clear what I mean!

How are texts with "dont", etc. handled?

Hello @Donatello-za,

I was wondering what you think is the correct approach to handling texts with incorrect writing. Such as "dont" instead of "don't"? "Dont" isn't filtered out and ends up in keywords while "don't" is. I feel it should be included to improve the keyword extraction.

Cheers,
Peter

Uncaught ErrorException: mb_split()

some problems with php 8.2.1.

Uncaught ErrorException: mb_split(): Passing null to parameter #2 ($string) of type string is deprecated in /var/www/.../vendor/donatello-za/rake-php-plus/src/RakePlus.php:336

Keywords with "-"

Words like "zinc-plated" or "gold-plated" should stay together.

for example, they query "Everbilt 3 in. Zinc-Plated Corner Brace (4-Pack)" I get:

["plated corner brace","everbilt 3","zinc","pack"]

The first, should be "zinc-plated", then probably "corner brace" etc..

phrase gets split on '

Same as except with newest version: #2

When the text to be parsed includes a contraction the phrase returned is split on the apostrophe.

Example:
$text = "the rep doesn't really have anything to talk about"
returns
Array
(
[rep doesn] => 4
[talk] => 1
)

min lenght and number filtering not working

This code is not working:


$rake = RakePlus::create($text, $locale, 3, true);
$phrases = $rake->sortByScore('desc')->keywords();

I get shorter than 3 characters keywords and some of them are only numbers.

Not sure what the issue may be.

LANGUAGE: es_AR

Thank you,

  • Nesjett

Interesting error.

Fatal error: Can't use function return value in write context in /var/www/html/neodev/tags/vendor/donatello-za/rake-php-plus/src/RakePlus.php on line 121

Non words characters / Global stopwords

When trying to get a list of keywords from a french text, special uncommon characters like ’,«,…,-,»,/ are not being considered as stopwords

Here is an example text

Après avoir inauguré à Bonnieux, les premières rencontres de la Caverne, autour du « compromis », nous avions décidé de poursuivre sur le thème du « Réparer ». Nous n’avions pas imaginé alors combien nous serions rattrapés par l’actualité de l’agression, de la destruction, des massacres et, pour tout dire de la désolation, au point de se demander si la réparation est encore possible ? Ce thème s’était imposé à nous d’abord parce que l’urgence de « Réparer la Terre » appelle une réflexion philosophique sur l’écologie politique qui ne souffre plus aucun délai. Si depuis la fin de la seconde guerre mondiale nous avons mis l’accent sur la reconstruction et la production, nous assistons aujourd’hui à un retournement au point que certains voient dans la production la forme même de la destruction des conditions d’habitabilité de la planète. Comme le dit Bruno Latour, « L’obligation de rabouter le monde dont on vit avec le monde où l’on vit oblige à penser le sens de l’histoire non pas comme un mouvement vers l’avant…mais comme la multiplication des manières d’habiter et de prendre soin des pratiques d’engendrement ». Mais pouvons-nous réparer ? Réparer la Terre ? Réparer la trame et le tissu de notre écosystème ? Recoudre ? Ravauder la planète ? Répondre à ces questions c’est ouvrir des problématiques multiples : politique bien sûr pour repenser l’aménagement du territoire, la mobilité, la ville ; économique évidemment de manière à penser l’économie circulaire celle de la réutilisation, du réemploi et de la réparation ; sociale aussi pour réintégrer l’humain dans l’écosystème du vivant afin de prendre conscience que « le monde où l’on vit » est dépendant « du monde dont on vit » comme le dit encore Bruno Latour. Bref « Atterrir » ! Réparer, c’est aussi offrir aux victimes les issues nécessaires aux dommages qu’elles subissent. Dans le champ de l’éthique et de la justice, l’attention portée à toutes les victimes nous conduit à remettre en cause notre langage, notre histoire, nos façons de faire, de vivre, voire de penser et de parler. L’émergence d’une foule de victimes qui se regroupent en communautés pour faire valoir leur identité, se fait entendre. Par définition, la multiplication des victimes appelle la multiplication des réparations. La multiplication des tribunaux aussi, avec l’émergence de nouveaux crimes, de guerre, contre l’humanité, de génocide, d’agression. Les victimes réclament réparation pour les préjudices subis aujourd’hui, mais aussi pour ceux d’hier et d’avant-hier comme si les vivants, saisis par la griffe du passé, se faisaient les porte-parole des voix d’outre-tombe pour réclamer justice. Mais pendant que nous étions en train de « bricoler », de « rabouter », de réparer, de retisser nos relations avec tous les vivants, nous avons été rattrapés par la violence de l’histoire, de celle qui conduit à l’irréparable voire à l’impardonnable, de celle que le XX° siècle a enfanté comme cauchemars et, à la renaissance de laquelle, nous assistons médusés. Réparer, depuis l’assaut de la Russie contre l’Ukraine, a pris un nouveau sens, une nouvelle urgence, un nouveau questionnement. Car il faut également entendre cela dans la réparation : la dimension morale de la faute. Celle qu’on peut expier ou payer d’une part car on trouvera dans la réparation un équivalent du préjudice causé et la faute inexpiable, d’autre part, qui est sans équivalent, c’est à dire celle qui est à la fois irréparable et impardonnable. Ou bien pardonnable, peut-être, mais au prix d’un effort surhumain. « Pardonner est une épreuve presque surhumaine, un effort toujours à recommencer et pour lequel toutes les ressources de la sagesse ne sont pas de trop... Sans cesse nous oscillons entre le pardon et la rancune, entre le pardon et l'attitude que l'on a en face de l'impardonnable. » (Jankélévitch) Et aujourd’hui se réveille le spectre de l’irréparable dans un monde dominé à nouveau par la violence et le tragique de de l’histoire. Chercher à penser la réparation, c’est donc tenir ensemble les trois temps de l’histoire, tels que les pensait Braudel : celui de la longue durée qui conditionne l’avenir de la planète ; celui du temps moyen à travers lequel l’économie, le social, les moeurs accumulent les victimes et leurs ressentiments ; le temps bref de l’événement enfin, dont la violence et la brusquerie nous sidèrent souvent et nous empêchent de penser. L’écheveau de l’histoire emmêle aujourd’hui ces différentes temporalités : nous n’avons plus le temps d’attendre. Réparer, c’est aussi penser dans l’urgence. Drina Candilis - Bruno Huisman - Philippe Jonathan - Lien Pfeufer - Eric Spitz

Which when doing

slice(RakePlus::create($text, 'fr_FR')->sortByScore()->keywords(), 0, 5);

Will return ['’', '«', '…', '-', '»'] as first keywords, which is.. Well not useful

Can we add non words like this as global stopwords?

Maybe we need an option to be able to add global stopwords

Find a solution for words such as "re-assign", which returns "assign"

For any words that are hyphenated where it also contains a stopword, the stopword will be removed, e.g.

  • re-assign becomes assign
  • off-campus becomes campus

The problem is that if we don't split hyphenated words we get other issues, for example:

  • re-assigned becomes -assign
  • off-campus becomes -campus

So an elegant solution need to be found, i.e. perhaps trim hyphens also.

Got an issue french phrase

This phrase give me this keywords. But i want to have the "top 14" in the same keyword. How can i achieve that ?

"Rugby - Top 14 : Direction les États-Unis pour Mathieu Bastareaud ?"

$text = "Rugby - Top 14 : Direction les États-Unis pour Mathieu Bastareaud ?";
$phrases = RakePlus::create($text, 'fr_FR', 2, false)->get();
$rake = RakePlus::create($text, 'fr_FR', 2, false);
$keywords = $rake->keywords();

var_dump($phrases,$keywords);
array(8) {
  [0]=>
  string(5) "rugby"
  [1]=>
  string(3) "top"
  [2]=>
  int(14)
  [3]=>
  string(9) "direction"
  [4]=>
  string(4) "unis"
  [5]=>
  string(4) "pour"
  [6]=>
  string(7) "mathieu"
  [7]=>
  string(10) "bastareaud"
}
array(8) {
  [0]=>
  string(5) "rugby"
  [1]=>
  string(3) "top"
  [2]=>
  string(2) "14"
  [3]=>
  string(9) "direction"
  [4]=>
  string(4) "unis"
  [5]=>
  string(4) "pour"
  [6]=>
  string(7) "mathieu"
  [7]=>
  string(10) "bastareaud"
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.