Perl data store for the list of affective norms of emotional words in the english language.
Perl
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
lib/Lingua/EN
share
sql
t
.gitignore
Changes
Makefile.PL
README

README

NAME
    Lingua::EN::AffectiveNorms - Perl based data store for the ANEW -
    standardised list of Affective Norms for English Words.

VERSION
    Version 0.01

SYNOPSIS
    This module provides data store and retrieval to assess the emotional
    content of text based on a standardised list of english words. It has
    use in some text mining procedures (e.g. see ACKNOWLEDGEMENTS section).

    DBIx::Class schema (dynamic) to load list of english affective words
    from http://csea.phhp.ufl.edu/media/anewmessage.html

     my $schema    = Lingua::EN::AffectiveWords->connect; # db lives in same dir as package by default
     my $all_rs    = $schema->resultset(AllSubjects);
     my $male_rs   = $schema->resultset(Male);
     my $female_rs = $schema->resultset(Female);

    The list of words is a bit tricky to obtain (see link above), but once
    you do, you should enter the list into a sqlite schema given below, and
    put it in the same directory as this .pm file (perldoc -M
    Lingua::EN::AffectiveNorms to work out where that is).

    The schema is as follows:

     create table all_subjects (
     word varchar(32),
     word_stem varchar(32),
     word_no integer,
     valence_mean float,
     valence_sd float,
     arousal_mean float,
     arousal_sd float,
     dominance_mean float,
     dominance_sd float,
     word_freq float,
     primary key(word)
     );

     create table male (
     word varchar(32),
     word_stem varchar(32),
     word_no integer,
     valence_mean float,
     valence_sd float,
     arousal_mean float,
     arousal_sd float,
     dominance_mean float,
     dominance_sd float,
     word_freq float,
     primary key(word)
     );

     create table female (
     word varchar(32),
     word_stem varchar(32),
     word_no integer,
     valence_mean float,
     valence_sd float,
     arousal_mean float,
     arousal_sd float,
     dominance_mean float,
     dominance_sd float,
     word_freq float,
     primary key(word)
     );

    The next thing is to put the male, female and all_subjects lists into
    separate csv files, with the headibngs as for the column names in the
    database, then run the following perl script on it:

     use Text::CSV_XS;
     my $csv = Text::CSV_XS->new;

     use Lingua::Stem qw/stem/;

     my ($infile, $table) = @ARGV or die "infile and table name required";
     my $schema = Lingua::EN::AffectiveNorms::Schema->connect;
     my $rs = $schema->resultset($table);

     open my $IN, "<", $infile;
     my @header;
     while (<$IN>) {
         $csv->parse($_);
         my @row = $csv->fields;
         if ($. == 1) {
             @header = @row;
         }
         else {
             my %data;
             @data{@header} = @row;
             $data{word_stem} = stem($data{word})->[0];
             $rs->create(\%data);
         }
     }

    I'd distribute the databse with this module, except that the
    distribution conditions of the word list preclude this.

AUTHOR
    Kieren Diment, "<zarquon at cpan.org>"

BUGS
    Please report any bugs or feature requests to
    "bug-lingua-en-affectivenorms at rt.cpan.org", or through the web
    interface at
    <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Lingua-EN-AffectiveNorms
    >. I will be notified, and then you'll automatically be notified of
    progress on your bug as I make changes.

SUPPORT
    You can find documentation for this module with the perldoc command.

        perldoc Lingua::EN::AffectiveNorms

    You can also look for information at:

    *   RT: CPAN's request tracker

        <http://rt.cpan.org/NoAuth/Bugs.html?Dist=Lingua-EN-AffectiveNorms>

    *   AnnoCPAN: Annotated CPAN documentation

        <http://annocpan.org/dist/Lingua-EN-AffectiveNorms>

    *   CPAN Ratings

        <http://cpanratings.perl.org/d/Lingua-EN-AffectiveNorms>

    *   Search CPAN

        <http://search.cpan.org/dist/Lingua-EN-AffectiveNorms/>

ACKNOWLEDGEMENTS
    Inspired by the paper Dodds, P., & Danforth, C. (2009). Measuring the
    Happiness of Large-Scale Written Expression: Songs, Blogs, and
    Presidents. Journal of Happiness Studies. doi:
    10.1007/s10902-009-9150-9. avialable (open access) from:
    <http://www.springerlink.com/content/757723154j4w726k>

COPYRIGHT & LICENSE
    Copyright 2009 Kieren Diment, all rights reserved.

    This program is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.