liwc-analysis
This package serves as a driver for the LIWC2015 .txt dictionary. The dictionary is not included and can be purchased directly from LIWC.
Usage
The usage is fairly straight forward. First import the package
import liwcanalysis
Then you need to create an instance of the LIWC analysis with the path to the .txt file.
LIWCLocation = "/Users/Eric/repositories/transcript-analysis/LIWC/LIWC.2015.all.txt"
LIWC = liwcanalysis.liwc(LIWCLocation)
Then you can pass in a list of strings to analyze to receive a tuple of results dictionary and count dictionary.
transcripts = {
"Example1": "This is a single transcript. Red hat angry.",
"Example2": "This is another single transcript. Dog boy cat.",
}
str_list = []
for key in transcripts:
str_list.append(transcripts[key])
result_dics, count_dics = LIWC.analyze(str_list)
Please note that analyze() can take either a single string argument or a list of strings. Example:
# this is valid
result_dics, coutn_dics = LIWC.analyze(["this is a string", "here is another", "one more"])
# this is also valid
result_dics, coutn_dics = LIWC.analyze("this is a string")
result_dics is a list of dictionaries. Each dictionary corresponds to one of the strings passed into analyze. Each dictionary follows the form of "LIWC Category": [list, of, words, matched]. For instance the dictionary for one string might look something like:
{
"FUNCTION": ["is", "a"],
"QUANT": ["single"],
...
}
count_dics is very similar to result_dics, but instead of giving a list of words matched, it gives the length of each list of words matched:
{
"FUNCTION": 2,
"QUANT": 1,
...
}
Finally, you can print out the results to csv using:
LIWC.print(output_dir, titles)
You need to specify the output directory, as well as a list of titles for each string. See the full example for more details.
You can also retrieve an alphabetically sorted (A->Z) list of LIWC categories using LIWC.get_categories().
Full Example
import liwcanalysis
transcripts = {
"Example1": "This is a single transcript. Red hat angry.",
"Example2": "This is another single transcript. Dog boy cat.",
}
str_list = []
for key in transcripts:
strs.append(transcripts[key])
LIWCLocation = "/Users/Downloads/LIWC/LIWC.2015.all.txt"
output_dir = "/Path/to/my/file/"
LIWC = liwcanalysis.liwc(LIWCLocation)
result_dics, count_dics = LIWC.analyze(str_list)
LIWC.print(output_dir, list(transcript.keys()))
Using print will return the following tables: /Path/to/my/file/LIWCcounts.csv:
| Category | Example1 | Example2 |
|---|---|---|
| ADJ | 1 | 1 |
| ARTICLE | 1 | |
| AUXVERB | 1 | 1 |
| FOCUSPRESENT | 1 | 1 |
| FUNCTION | 2 | 2 |
| IPRON | 1 | |
| MALE | 1 | |
| NUMBER | 1 | 1 |
| PRONOUN | 1 | |
| QUANT | 1 | 2 |
| SOCIAL | 1 | |
| VERB | 1 | 1 |
| WORK | 1 | 1 |
| TOTAL | 8 | 8 |
/Path/to/my/file/LIWCwords.csv:
| Category | Example1 | Example2 |
|---|---|---|
| ADJ | ['single'] | ['single'] |
| ARTICLE | ['a'] | |
| AUXVERB | ['is'] | ['is'] |
| FOCUSPRESENT | ['is'] | ['is'] |
| FUNCTION | ['is', 'a'] | ['is', 'another'] |
| IPRON | ['another'] | |
| MALE | ['boy'] | |
| NUMBER | ['single'] | ['single'] |
| PRONOUN | ['another'] | |
| QUANT | ['single'] | ['another', 'single'] |
| SOCIAL | ['boy'] | |
| VERB | ['is'] | ['is'] |
| WORK | ['transcript.'] | ['transcript.'] |
/Path/to/my/file/LIWCrelativefreq.csv
| Category | Example1 | Example2 |
|---|---|---|
| ADJ | 0.125 | 0.125 |
| ARTICLE | 0.125 | |
| AUXVERB | 0.125 | 0.125 |
| FOCUSPRESENT | 0.125 | 0.125 |
| FUNCTION | 0.25 | 0.25 |
| IPRON | 0.125 | |
| MALE | 0.125 | |
| NUMBER | 0.125 | 0.125 |
| PRONOUN | 0.125 | |
| QUANT | 0.125 | 0.25 |
| SOCIAL | 0.125 | |
| VERB | 0.125 | 0.125 |
| WORK | 0.125 | 0.125 |
Please let me know if you have any questions or features requests. Please feel free to open up a pull request, issue, or shoot me an email at ericwiener3@gmail.com.
Metadata
Release files for liwc-analysis 1.2.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| liwc-analysis-1.2.4.tar.gz | 4.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| liwc_analysis-1.2.4-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 10.0 kB
Release files / liwc-analysis-1.2.4.tar.gz
| Download URL | liwc-analysis-1.2.4.tar.gz |
|---|---|
| Size | 4.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
22e336a266e5f1051f39e26b1b355c1d19fe4e6ffa1f087bbc2d70b14d2c261f
|
|
BLAKE2b-256 checksum How to use checksums |
05b11f367c0af8d04cc3f21324638ed0835187e19405058974084601d93c9866
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/40.7.1 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.7.2
|
Release files / liwc_analysis-1.2.4-py2.py3-none-any.whl
| Download URL | liwc_analysis-1.2.4-py2.py3-none-any.whl |
|---|---|
| Size | 5.5 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
ec942be71f27f795c8ed2b381e81c77c645158545da46348d17df4c3a5e299a9
|
|
BLAKE2b-256 checksum How to use checksums |
ebb5bce45c2c5fe37a3e1a49fa2bd06f4971a890e30d07833891084c0bf96401
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/40.7.1 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.7.2
|