<commit_before># jLCM

A Java implementation of the LCM (Linear Closed itemsets Miner) algorithm, as proposed by T.Uno & H.Arimura. It is multi-threaded, as proposed by Négrevergne et al., hence the name of its main class: PLCM.

Reference papers:

* "An efficient algorithm for enumerating closed patterns in transaction 
databases" by <NAME>, <NAME>, <NAME> and <NAME>, in Discovery Science, 
2004
* "Discovering closed frequent itemsets on multicore: Parallelizing computations 
and optimizing memory accesses" by <NAME>, <NAME>, <NAME>, 
and <NAME> in International Conference on High Performance Computing & 
Simulation, 2010

Please use [Maven](http://maven.apache.org/) to build the program. 

## jLCM as a command-line utility

Download [jLCM-cli's JAR](https://github.com/slide-lig/jlcm-cli/raw/binary/jLCM-cli-1.7.0-wdeps.jar) and invoke `java -jar jLCM-cli-1.7.0-wdeps.jar` to show the complete manual. Note that this program's `main` function lives in [a separated project](https://github.com/slide-lig/jlcm-cli/).

This tool uses ASCII files as input: each line represents a transaction (using UNIX line terminators). You may find example input files in the [FIMI repository](http://fimi.ua.ac.be/data/), or start with a small one embedded in `src/test/resources` like [50retail.dat](https://github.com/slide-lig/jlcm/raw/master/src/test/resources/50retail.dat).

## jLCM as a library/Maven dependency

Add the following dependency to your `pom.xml`

    <dependency>
        <groupId>fr.liglab.jlcm</groupId>
        <artifactId>jLCM</artifactId><commit_msg>highlighting key features in README.md<commit_after># jLCM

A Java implementation of the LCM (Linear Closed itemsets Miner) algorithm, as proposed by T.Uno & H.Arimura. It is multi-threaded, as proposed by Négrevergne et al., hence the name of its main class: PLCM.

Key features:

* Mines closed frequent itemsets 
* Excellent speed-up on multi-core machines
* Provides iterator interfaces to adapt your own items/transactions/itemset collections
* Able to load datasets greater than 4GB (since v1.7)

Reference papers:

* "An efficient algorithm for enumerating closed patterns in transaction 
databases" by <NAME>, <NAME>, <NAME> and <NAME>, in Discovery Science, 
2004
* "Discovering closed frequent itemsets on multicore: Parallelizing computations 
and optimizing memory accesses" by <NAME>, <NAME>, <NAME>, 
and <NAME> in International Conference on High Performance Computing & 
Simulation, 2010

Please use [Maven](http://maven.apache.org/) to build the program. 

## jLCM as a command-line utility

Download [jLCM-cli's JAR](https://github.com/slide-lig/jlcm-cli/raw/binary/jLCM-cli-1.7.0-wdeps.jar) and invoke `java -jar jLCM-cli-1.7.0-wdeps.jar` to show the complete manual. Note that this program's `main` function lives in [a separated project](https://github.com/slide-lig/jlcm-cli/).

This tool uses ASCII files as input: each line represents a transaction (using UNIX line terminators). You may find example input files in the [FIMI repository](http://fimi.ua.ac.be/data/), or start with a small one embedded in `src/test/resources` like [50retail.dat](https://github.com/slide-lig/jlcm/raw/master/src/test/resources/50retail.dat).

## jLCM as a library/Maven dependency

Add the following dependency to your `pom.xml`

    <dependency>
        <groupId>fr.liglab.jlcm</groupId>
        <artifactId>jLCM</artifactId>
{'fraction_non_alphanumeric': 0.1066079295154185, 'fraction_numerical': 0.01145374449339207, 'mean_word_length': 4.414944356120826, 'pattern_counts': {'":': 0, '<': 29, '<?xml version=': 0, '>': 29, 'https://': 6, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1234439', 'n_tokens_mistral': 1104, 'n_tokens_neox': 1031, 'n_words': 376}