<commit_before>Google Voice Analysis
=====================

A collection of scripts to parse and analyze exported Google Voice data.

So far it just parses the data and runs a few [Naive Bayes classifiers](http://en.wikipedia.org/wiki/Naive_Bayes_classifier), but
I'm looking to expand.

Usage
-----

0. [Download](https://www.google.com/takeout/?pli=1#custom:voice) and extract your Google Voice data.

1. Copy `settings_example.py` to `settings.py` and configure appropriately.

2. Run `gv_to_db.py` to load everything into a SQLite database.

3. Run `who_from.py` to run a few simple analyzers using Naive Bayes.

Classifiers
---------

- `people_with_many_texts(n)` classifies the texts of people who have sent more than `n` texts.

- `recipient_is(name)` classifies texts into either `name` or `not_name`.

- `split_me_not_me()` classifies texts into either `me` or `not_me` depending on the sender.

Interactive Mode
----------------

1. Get your training and test sets from one of the classifiers.

2. Run `build_classifier(training_set)`.

3. Run `interactive` on your classifier.

4. Enter some messages.

License
-------
<commit_msg>README says to install requirements.txt<commit_after>Google Voice Analysis
=====================

A collection of scripts to parse and analyze exported Google Voice data.

So far it just parses the data and runs a few [Naive Bayes classifiers](http://en.wikipedia.org/wiki/Naive_Bayes_classifier), but
I'm looking to expand.

Usage
-----

0. [Download](https://www.google.com/takeout/?pli=1#custom:voice) and extract your Google Voice data.

1. Install the dependencies with something like `pip install -r requirements.txt`.

2. Copy `settings_example.py` to `settings.py` and configure appropriately.

3. Run `gv_to_db.py` to load everything into a SQLite database.

4. Run `who_from.py` to run a few simple analyzers using Naive Bayes.

Classifiers
---------

- `people_with_many_texts(n)` classifies the texts of people who have sent more than `n` texts.

- `recipient_is(name)` classifies texts into either `name` or `not_name`.

- `split_me_not_me()` classifies texts into either `me` or `not_me` depending on the sender.

Interactive Mode
----------------

1. Get your training and test sets from one of the classifiers.

2. Run `build_classifier(training_set)`.

3. Run `interactive` on your classifier.

4. Enter some messages.

License
-------

{'fraction_non_alphanumeric': 0.13063439065108515, 'fraction_numerical': 0.007929883138564273, 'mean_word_length': 3.8326612903225805, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, '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': '2692200', 'n_tokens_mistral': 746, 'n_tokens_neox': 722, 'n_words': 285}