From 34e7e8431e2520443c78ab75543f0b7d5c57a639 Mon Sep 17 00:00:00 2001 From: sundy1994 Date: Tue, 1 Oct 2024 20:42:10 -0700 Subject: [PATCH 1/7] added BYOL feature, updated some doc strings --- pyproject.toml | 1 + src/team_comm_tools/feature_builder.py | 26 ++++- .../features/lexical_features_v2.py | 19 +++- .../utils/calculate_chat_level_features.py | 26 ++++- src/team_comm_tools/utils/check_embeddings.py | 103 +++++++++++++++++- 5 files changed, 158 insertions(+), 17 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 9461e0a2..fda4b781 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,6 +14,7 @@ dependencies = [ "emoji==1.7.0", "flask==3.0.3", "gensim>=4.3.3", + "matplotlib==3.0.0", "nltk==3.9.1", "numpy<2.0.0", "pandas==2.2.2", diff --git a/src/team_comm_tools/feature_builder.py b/src/team_comm_tools/feature_builder.py index bd600064..543c2c0a 100644 --- a/src/team_comm_tools/feature_builder.py +++ b/src/team_comm_tools/feature_builder.py @@ -92,6 +92,9 @@ class FeatureBuilder: :param compute_vectors_from_preprocessed: If true, computes vectors using preprocessed text (that is, with capitalization and punctuation removed). This was the default behavior for v.0.1.3 and earlier, but we now default to computing metrics on the unpreprocessed text (which INCLUDES capitalization and punctuation). Defaults to False. :type compute_vectors_from_preprocessed: bool, optional + :param custom_liwc_dictionary_path: This is the path of the user's own LIWC dictionary file (.dic). Defaults to empty string. + :type custom_liwc_dictionary_path: str, optional + :return: The FeatureBuilder doesn't return anything; instead, it writes the generated features to files in the specified paths. It will also print out its progress, so you should see "All Done!" in the terminal, which will indicate that the features have been generated. :rtype: None @@ -117,7 +120,8 @@ def __init__( ner_training_df: pd.DataFrame = None, ner_cutoff: int = 0.9, regenerate_vectors: bool = False, - compute_vectors_from_preprocessed: bool = False + compute_vectors_from_preprocessed: bool = False, + custom_liwc_dictionary_path: str = '' ) -> None: # Defining input and output paths. @@ -128,6 +132,23 @@ def __init__( print("Initializing Featurization...") + if not custom_liwc_dictionary_path: + self.custom_liwc_dictionary = {} + else: + # Read .dic file if the path is provided + custom_liwc_dictionary_path = Path(custom_liwc_dictionary_path) + if not custom_liwc_dictionary_path.suffix == '.dic': + print(f"WARNING: The custom LIWC dictionary file is not a .dic file: {custom_liwc_dictionary_path}") + self.custom_liwc_dictionary = {} + else: + with open(custom_liwc_dictionary_path, 'r', encoding='utf-8-sig') as file: + dicText = file.read() + try: + self.custom_liwc_dictionary = load_liwc_dict(dicText) + except Exception as e: + print(f"WARNING: Failed loading custom liwc dictionary: {e}") + self.custom_liwc_dictionary = {} + # Set features to generate # TODO --- think through more carefully which ones we want to exclude and why self.feature_dict = feature_dict @@ -564,7 +585,8 @@ def chat_level_features(self) -> None: ner_cutoff = self.ner_cutoff, conversation_id_col = self.conversation_id_col, message_col = self.message_col, - timestamp_col = self.timestamp_col + timestamp_col = self.timestamp_col, + custom_liwc_dictionary = self.custom_liwc_dictionary ) # Calling the driver inside this class to create the features. self.chat_data = chat_feature_builder.calculate_chat_level_features(self.feature_methods_chat) diff --git a/src/team_comm_tools/features/lexical_features_v2.py b/src/team_comm_tools/features/lexical_features_v2.py index 1cd7ede7..2c966d0a 100644 --- a/src/team_comm_tools/features/lexical_features_v2.py +++ b/src/team_comm_tools/features/lexical_features_v2.py @@ -26,7 +26,7 @@ def get_liwc_count(regex, chat): else: return 0 -def liwc_features(chat_df: pd.DataFrame, message_col) -> pd.DataFrame: +def liwc_features(chat_df: pd.DataFrame, message_col: str, custom_liwc_dictionary: dict={}) -> pd.DataFrame: """ This function takes in the chat level input dataframe and computes lexical features (the number of words from a given lexicon, such as LIWC). @@ -34,6 +34,7 @@ def liwc_features(chat_df: pd.DataFrame, message_col) -> pd.DataFrame: Args: chat_df (pd.DataFrame): This is a pandas dataframe of the chat level features. Should contain 'message' column. message_col (str): This is a string with the name of the column containing the message / text. + custom_liwc_dictionary (dict): This is a dictionary of the user's custom LIWC dic. Returns: pd.DataFrame: Dataframe of the lexical features stacked as columns. @@ -47,12 +48,18 @@ def liwc_features(chat_df: pd.DataFrame, message_col) -> pd.DataFrame: lexicons_dict = pickle.load(lexicons_pickle_file) # Return the lexical features stacked as columns - return pd.concat( + # return pd.concat( # Finding the # of occurrences of lexicons of each type for all the messages. - [pd.DataFrame(chat_df[message_col + "_original"].apply(lambda chat: get_liwc_count(regex, chat)))\ + df_lst = [pd.DataFrame(chat_df[message_col + "_original"].apply(lambda chat: get_liwc_count(regex, chat)))\ .rename({message_col + "_original": lexicon_type + "_lexical_wordcount"}, axis=1)\ - for lexicon_type, regex in lexicons_dict.items()], - axis=1 - ) + for lexicon_type, regex in lexicons_dict.items()] + # , axis=1 + # ) + if custom_liwc_dictionary: + df_lst += [pd.DataFrame(chat_df[message_col + "_original"].apply(lambda chat: get_liwc_count(regex, chat)))\ + .rename({message_col + "_original": lexicon_type + "_lexical_wordcount_custom"}, axis=1)\ + for lexicon_type, regex in custom_liwc_dictionary.items()] + return pd.concat(df_lst, axis=1) + except: print("WARNING: Lexicons not found. Skipping feature...") diff --git a/src/team_comm_tools/utils/calculate_chat_level_features.py b/src/team_comm_tools/utils/calculate_chat_level_features.py index ef55d4be..638a8c0a 100644 --- a/src/team_comm_tools/utils/calculate_chat_level_features.py +++ b/src/team_comm_tools/utils/calculate_chat_level_features.py @@ -32,14 +32,30 @@ class ChatLevelFeaturesCalculator: :param chat_data: Pandas dataframe of chat-level features read from the input dataset :type chat_data: pd.DataFrame + :param vect_data: Pandas dataframe containing vector data :type vect_data: pd.DataFrame + :param bert_sentiment_data: Pandas dataframe containing BERT sentiment data :type bert_sentiment_data: pd.DataFrame - :param ner_training_df: This is a pandas dataframe of training data for named entity recognition feature - :type ner_training_df: pd.DataFrame + + :param ner_training: This is a pandas dataframe of training data for named entity recognition feature + :type ner_training: pd.DataFrame + :param ner_cutoff: This is the cutoff value for the confidence of prediction for each named entity :type ner_cutoff: int + + :param conversation_id_col: A string representing the column name that should be selected as the conversation ID. Defaults to "conversation_num". + :type conversation_id_col: str + + :param message_col: A string representing the column name that should be selected as the message. Defaults to "message". + :type message_col: str + + :param timestamp_col: A string representing the column name that should be selected as the message. Defaults to "timestamp". + :type timestamp_col: str + + :param custom_liwc_dictionary: This is the user's own LIWC dictionary. Defaults to empty dictionary. + :type custom_liwc_dictionary: dict """ def __init__( self, @@ -50,7 +66,8 @@ def __init__( ner_cutoff: int, conversation_id_col: str, message_col: str, - timestamp_col: str | tuple[str, str] + timestamp_col: str | tuple[str, str], + custom_liwc_dictionary: dict ) -> None: self.chat_data = chat_data @@ -61,6 +78,7 @@ def __init__( self.conversation_id_col = conversation_id_col self.timestamp_col = timestamp_col self.message_col = message_col + self.custom_liwc_dictionary = custom_liwc_dictionary self.easy_dale_chall_words = get_dale_chall_easy_words() # load easy Dale-Chall words exactly once. self.function_words = get_function_words() # load function words exactly once self.question_words = get_question_words() # load question words exactly once @@ -169,7 +187,7 @@ def lexical_features(self) -> None: :return: None :rtype: None """ - self.chat_data = pd.concat([self.chat_data, liwc_features(self.chat_data, self.message_col)], axis = 1) + self.chat_data = pd.concat([self.chat_data, liwc_features(self.chat_data, self.message_col, self.custom_liwc_dictionary)], axis = 1) def calculate_hedge_features(self) -> None: """ diff --git a/src/team_comm_tools/utils/check_embeddings.py b/src/team_comm_tools/utils/check_embeddings.py index 2c56b3b6..77db3fb8 100644 --- a/src/team_comm_tools/utils/check_embeddings.py +++ b/src/team_comm_tools/utils/check_embeddings.py @@ -24,7 +24,8 @@ os.environ["TOKENIZERS_PARALLELISM"] = "false" # Check if embeddings exist -def check_embeddings(chat_data, vect_path, bert_path, need_sentence, need_sentiment, regenerate_vectors, message_col = "message"): +def check_embeddings(chat_data: pd.DataFrame, vect_path: str, bert_path: str, need_sentence: bool, + need_sentiment: bool, regenerate_vectors: bool, message_col: str = "message"): """ Check if embeddings and required lexicons exist, and generate them if they don't. @@ -90,15 +91,19 @@ def read_in_lexicons(directory, lexicons_dict): continue lines = [] for lexicon in lexicons: - # get rid of parentheses lexicon = lexicon.strip() - lexicon = lexicon.replace('(', '') - lexicon = lexicon.replace(')', '') + # get rid of parentheses; comment out to keep the emojis like :) + # TODO: compare the difference if we keep () + # lexicon = lexicon.replace('(', '') + # lexicon = lexicon.replace(')', '') if '*' not in lexicon: lines.append(r"\b" + lexicon.replace("\n", "") + r"\b") else: # get rid of any cases of multiple repeat -- e.g., '**' - lexicon = lexicon.replace('\**', '\*') + # lexicon = lexicon.replace('\**', '\*'); this will throw Invalid syntax error + pattern = re.compile(r'\*+') + lexicon = pattern.sub('*', lexicon) + lexicon = r"\b" + lexicon.replace("\n", "").replace("*", "") + r"\S*\b" # build the final lexicon lines.append(r"\b" + lexicon.replace("\n", "").replace("*", "") + r"\S*\b") @@ -134,6 +139,94 @@ def generate_lexicon_pkl(): except: print("WARNING: Lexicons not found. Skipping pickle generation...") +def fix_abbreviations(dicTerm: str) -> str: + """ + Helper function to fix abbreviations with punctuations. + src: https://github.com/ryanboyd/ContentCoder-Py/blob/main/ContentCodingDictionary.py#L714 + + This function goes over a list of hardcoded exceptions for the tokenizer / sentence parser + built into LIWC so that it doesn't convert them into separate strings + (e.g., we want "i.e." to not be seen as two words and two sentences [i, e]). + + :param dicTerm: The lexicon term + :type dicTerm: str + + :return: dicTerm + :rtype: str + """ + + AbbreviationList = ['ie.', 'i.e.', 'eg.', 'e.g.', 'vs.', 'ph.d.', 'phd.', 'm.d.', 'd.d.s.', 'b.a.', + 'b.s.', 'm.s.', 'u.s.a.', 'u.s.', 'u.t.', 'attn.', 'prof.', 'mr.', 'dr.', 'mrs.', + 'ms.', 'a.i.', 'a.g.i.', 'tl;dr', 't.t', 't_t'] + AbbreviationDict = {} + for item in AbbreviationList: + itemClean = item.replace('.', '-').replace(';', '-').replace('_', '-') + + if len(itemClean) > 2 and itemClean.endswith('-'): + numTrailers = len(itemClean) + itemClean = itemClean.strip('-') + numTrailers = numTrailers - len(itemClean) + itemClean = itemClean[:-1] + ''.join(['-'] * numTrailers) + itemClean[-1:] + + AbbreviationDict[item] = itemClean + AbbreviationDict[item + ','] = itemClean + + if dicTerm in AbbreviationDict.keys(): + return AbbreviationDict[dicTerm] + else: + return dicTerm + +def load_liwc_dict(dicText: str) -> dict: + """ + Loads up a dictionary that is in the LIWC 2007/2015 format. + src: https://github.com/ryanboyd/ContentCoder-Py/blob/main/ContentCodingDictionary.py#L81 + + This functions reads the content of a LIWC dictionary file in the official format, + and convert it to a dictionary with lexicon: regular expression format. + We assume the dicText has two parts: the header, which maps numbers to "category names," + and the body, which maps words in the lexicon to different category numbers, separated by a '%' sign. + + :param dicText: The content of a .dic file + :type dicText: str + + :return: dicCategories + :rtype: dict + """ + dicSplit = dicText.split('%', 2) + dicHeader, dicBody = dicSplit[1], dicSplit[2] + # read headers + catNameNumberMap = {} + for line in dicHeader.splitlines(): + if line.strip() == '': + continue + lineSplit = line.strip().split('\t') + catNameNumberMap[lineSplit[0]] = lineSplit[1] + # read body + dicCategories = {} + for line in dicBody.splitlines(): + lineSplit = line.strip().split('\t') + dicTerm, catNums = lineSplit[0], lineSplit[1:] + dicTerm = fix_abbreviations(dicTerm=' '.join(lineSplit[0].lower().strip().split())) + dicTerm = dicTerm.strip() + if dicTerm == '': + continue + if '*' not in dicTerm: + dicTerm = r"\b" + dicTerm.replace("\n", "") + r"\b" + else: + # Replace consecutive asterisks with a single asterisk -- e.g., '**'->'*' + pattern = re.compile(r'\*+') + dicTerm = pattern.sub('*', dicTerm) + dicTerm = r"\b" + dicTerm.replace("\n", "").replace("*", "") + r"\S*\b" + + for catNum in catNums: + cat = catNameNumberMap[catNum] + if cat not in dicCategories: + dicCategories[cat] = dicTerm + else: + cur_dicTerm = dicCategories[cat] + dicCategories[cat] = cur_dicTerm + "|" + dicTerm + return dicCategories + def generate_certainty_pkl(): """ Helper function for generating the pickle file containing the certainty lexicon. From 27c571e5f40f225147bb25a20e36e306eadea95c Mon Sep 17 00:00:00 2001 From: sundy1994 Date: Thu, 17 Oct 2024 10:30:35 -0700 Subject: [PATCH 2/7] add matplotlib requirements --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 3c570b21..5c86c0fb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,7 @@ convokit==3.0.0 emoji==1.7.0 flask==3.0.3 gensim>=4.3.3 +matplotlib==3.0.0 nltk==3.9.1 numpy<2.0.0 pandas==2.2.2 From 1367090d21d8acd0752b5086491730e69b112a99 Mon Sep 17 00:00:00 2001 From: sundy1994 Date: Thu, 17 Oct 2024 10:34:02 -0700 Subject: [PATCH 3/7] bug fix --- pyproject.toml | 2 +- requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index fda4b781..e23dabc2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ dependencies = [ "emoji==1.7.0", "flask==3.0.3", "gensim>=4.3.3", - "matplotlib==3.0.0", + "matplotlib>=3.0.0", "nltk==3.9.1", "numpy<2.0.0", "pandas==2.2.2", diff --git a/requirements.txt b/requirements.txt index 5c86c0fb..83fb603e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ convokit==3.0.0 emoji==1.7.0 flask==3.0.3 gensim>=4.3.3 -matplotlib==3.0.0 +matplotlib>=3.0.0 nltk==3.9.1 numpy<2.0.0 pandas==2.2.2 From 006ad111077aa63b7878fc29a8cdd0f7f11d871f Mon Sep 17 00:00:00 2001 From: sundy1994 Date: Thu, 17 Oct 2024 19:11:21 -0700 Subject: [PATCH 4/7] bug fixes --- src/team_comm_tools/features/lexical_features_v2.py | 5 +++-- src/team_comm_tools/utils/check_embeddings.py | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/team_comm_tools/features/lexical_features_v2.py b/src/team_comm_tools/features/lexical_features_v2.py index 2c966d0a..76b3330e 100644 --- a/src/team_comm_tools/features/lexical_features_v2.py +++ b/src/team_comm_tools/features/lexical_features_v2.py @@ -60,6 +60,7 @@ def liwc_features(chat_df: pd.DataFrame, message_col: str, custom_liwc_dictionar .rename({message_col + "_original": lexicon_type + "_lexical_wordcount_custom"}, axis=1)\ for lexicon_type, regex in custom_liwc_dictionary.items()] return pd.concat(df_lst, axis=1) - - except: + except FileNotFoundError: print("WARNING: Lexicons not found. Skipping feature...") + except Exception as e: + print(f'WARNING: Failed to generate lexicons due to unexpected error: {e}') diff --git a/src/team_comm_tools/utils/check_embeddings.py b/src/team_comm_tools/utils/check_embeddings.py index 77db3fb8..cb54875d 100644 --- a/src/team_comm_tools/utils/check_embeddings.py +++ b/src/team_comm_tools/utils/check_embeddings.py @@ -210,13 +210,14 @@ def load_liwc_dict(dicText: str) -> dict: dicTerm = dicTerm.strip() if dicTerm == '': continue - if '*' not in dicTerm: - dicTerm = r"\b" + dicTerm.replace("\n", "") + r"\b" - else: + + if '*' in dicTerm: # Replace consecutive asterisks with a single asterisk -- e.g., '**'->'*' pattern = re.compile(r'\*+') dicTerm = pattern.sub('*', dicTerm) dicTerm = r"\b" + dicTerm.replace("\n", "").replace("*", "") + r"\S*\b" + else: + dicTerm = r"\b" + dicTerm.replace("\n", "").replace('(', r'\(').replace(')', r'\)') + r"\b" for catNum in catNums: cat = catNameNumberMap[catNum] From 65140f1e052d78be6f5e1df810d17b6fd0cbe8d4 Mon Sep 17 00:00:00 2001 From: Xinlan Emily Hu Date: Tue, 22 Oct 2024 12:28:07 -0400 Subject: [PATCH 5/7] update documentation --- docs/build/doctrees/environment.pickle | Bin 324236 -> 326081 bytes docs/build/doctrees/feature_builder.doctree | Bin 90730 -> 93121 bytes .../features/lexical_features_v2.doctree | Bin 15414 -> 17885 bytes .../calculate_chat_level_features.doctree | Bin 87407 -> 91521 bytes .../doctrees/utils/check_embeddings.doctree | Bin 44856 -> 58554 bytes docs/build/html/feature_builder.html | 3 +- .../html/features/lexical_features_v2.html | 3 +- docs/build/html/genindex.html | 4 ++ docs/build/html/objects.inv | Bin 4365 -> 4389 bytes docs/build/html/searchindex.js | 2 +- .../utils/calculate_chat_level_features.html | 8 ++- docs/build/html/utils/check_embeddings.html | 47 +++++++++++++++++- docs/source/basics.rst | 4 +- docs/source/features_conceptual/liwc.rst | 27 ++++++++-- src/team_comm_tools/feature_builder.py | 1 + .../features/lexical_features_v2.py | 5 +- 16 files changed, 89 insertions(+), 15 deletions(-) diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 529ce2906c4b4a79517c5c8eff1854e8d8ed58c1..040300d4567d13196da2c3369895c109a931c86e 100644 GIT binary patch delta 34006 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 delta 33508 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%0Af2xJ{ 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 diff --git a/docs/build/doctrees/feature_builder.doctree b/docs/build/doctrees/feature_builder.doctree index a9545918a84df408109763a6ab0f7784fe637b5d..44159a257db5c34d179646af5ef5609b8c48ba68 100644 GIT binary patch delta 14814 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 Aga7~l delta 13963 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 WOR->SH7Uo;@Kw8m^qApp`_O-z*`D(N delta 872 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 QbsD#suE2?7U1IkC0}lHsrT_o{ diff --git a/docs/build/doctrees/utils/check_embeddings.doctree b/docs/build/doctrees/utils/check_embeddings.doctree index 76a641b7de50b2ea5b38305fb97d71f042caa42e..c8b8b9744d71494d80bb4775f8d8218b849cfb40 100644 GIT binary patch literal 58554 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

FNJ`ZHDZe* zyb^QKybKm>3x~%}hZi-F>o^>_>9p!*vq_GYvAvxrQ=LF)8 z^Wg^WPGG-KMW@53N_BoDjkRt&n1X5r@UNiJv=+#HhdUCf40EPrP+N!}DD2=gS@!jm z$bY+6(RjBHfBbNQk|}&jnb?cdzI`c12ln3HWWUj#2*<_wxX6*)V;rWG2~{?JG0*q7?q zec~=%I?itVap_thwt?QIUG^*v$%2(^lI7A&tRHSxm7ev&=7s~)p>9Oa@D%cGQ9j6^D_u=e<^JM=a}wsl+(@dmR4c-{s+iVX7_ zgc}=PtHsqBqwo3yBK=9I&m)7w@FECPz#oYV40wgH15PAwjFXw_Z*)41R=-K6wn#QT O*`zT-xKrLsGye~DNZ+0S literal 44856 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

feature_builder module

-class feature_builder.FeatureBuilder(input_df: DataFrame, vector_directory: str = './vector_data/', output_file_base: str = 'output', output_file_path_chat_level: str = None, output_file_path_user_level: str = None, output_file_path_conv_level: str = None, custom_features: list = [], analyze_first_pct: list = [1.0], turns: bool = False, conversation_id_col: str = 'conversation_num', speaker_id_col: str = 'speaker_nickname', message_col: str = 'message', timestamp_col: str | tuple[str, str] = 'timestamp', grouping_keys: list = [], cumulative_grouping=False, within_task=False, ner_training_df: DataFrame = None, ner_cutoff: int = 0.9, regenerate_vectors: bool = False, compute_vectors_from_preprocessed: bool = False)
+class feature_builder.FeatureBuilder(input_df: DataFrame, vector_directory: str = './vector_data/', output_file_base: str = 'output', output_file_path_chat_level: str = None, output_file_path_user_level: str = None, output_file_path_conv_level: str = None, custom_features: list = [], analyze_first_pct: list = [1.0], turns: bool = False, conversation_id_col: str = 'conversation_num', speaker_id_col: str = 'speaker_nickname', message_col: str = 'message', timestamp_col: str | tuple[str, str] = 'timestamp', grouping_keys: list = [], cumulative_grouping=False, within_task=False, ner_training_df: DataFrame = None, ner_cutoff: int = 0.9, regenerate_vectors: bool = False, compute_vectors_from_preprocessed: bool = False, custom_liwc_dictionary_path: str = '')

Bases: object

The FeatureBuilder is the main engine that reads in the user’s inputs and specifications and generates conversational features. The FeatureBuilder separately calls the classes (the ChatLevelFeaturesCalculator, @@ -132,6 +132,7 @@

  • ner_cutoff (int) – This is the cutoff value for the confidence of prediction for each named entity. Defaults to 0.9.

  • regenerate_vectors (bool, optional) – If true, will regenerate vector data even if it already exists. Defaults to False.

  • compute_vectors_from_preprocessed (bool, optional) – If true, computes vectors using preprocessed text (that is, with capitalization and punctuation removed). This was the default behavior for v.0.1.3 and earlier, but we now default to computing metrics on the unpreprocessed text (which INCLUDES capitalization and punctuation). Defaults to False.

  • +
  • custom_liwc_dictionary_path (str, optional) – This is the path of the user’s own LIWC dictionary file (.dic). Defaults to empty string.

  • Returns:
    diff --git a/docs/build/html/features/lexical_features_v2.html b/docs/build/html/features/lexical_features_v2.html index 3ad8fd6b..1d0f5c84 100644 --- a/docs/build/html/features/lexical_features_v2.html +++ b/docs/build/html/features/lexical_features_v2.html @@ -136,7 +136,7 @@
    -features.lexical_features_v2.liwc_features(chat_df: DataFrame, message_col) DataFrame
    +features.lexical_features_v2.liwc_features(chat_df: DataFrame, message_col: str, custom_liwc_dictionary: dict = {}) DataFrame

    This function takes in the chat level input dataframe and computes lexical features (the number of words from a given lexicon, such as LIWC).

    @@ -146,6 +146,7 @@
    • chat_df (pd.DataFrame) – This is a pandas dataframe of the chat level features. Should contain ‘message’ column.

    • message_col (str) – This is a string with the name of the column containing the message / text.

    • +
    • custom_liwc_dictionary (dict) – This is a dictionary of the user’s custom LIWC dic.

    Returns:
    diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index 79fe2257..137a2070 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -449,6 +449,8 @@

    F

  • featurize() (feature_builder.FeatureBuilder method) +
  • +
  • fix_abbreviations() (in module utils.check_embeddings)
  • function_mimicry_score() (in module features.word_mimicry)
  • @@ -621,6 +623,8 @@

    L

  • lexical_features() (utils.calculate_chat_level_features.ChatLevelFeaturesCalculator method)
  • liwc_features() (in module features.lexical_features_v2) +
  • +
  • load_liwc_dict() (in module utils.check_embeddings)
    • diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index 3d088974a47c3dd22f4bfc4065e24a08dcc82c0a..1e823fb6528e787821461129fda4cf22b85a5d50 100644 GIT binary patch delta 2284 zcmVBBdg*J_vtqv!|GDHWhow#K<`l?2Z-u1YJ@AQ9oRcXZ&%hf(lPrBXi28b$8VYpvHVd%0K7bxndl?>b_weOFab7;MD&bd? zHZ5Q2=Cfq1+{b@8kx4p|*$?Imjcg%Dr$z+Dn={gnMon{J2SE??X=cEzm=~~aQuZ)2 zq`W;dAE0n|yY>;60k;)Bumw0E?`(XzCN7qmYq<}ni~&f$^~yWCuwRE4r<0&bRl-Lp zu8(kGv`iB$IFnitIm-m`PF+o)&;FK{35k9sGDS#`^`3u`_u_9=FsB=q8=?TF2#;^I zY4XD>DSY#p9bxFo?N{5b`-Cg(oQj4wc{74%L?R;^ko@OiWCyuYPv=4X^LyWAD*Iiy zWKP}AD48Ge{7A>{4t0{hAd9?Hv#zkGLj9EzT07$cp33p;GK`fph|nA+Cw`B4QvKL! zqe){{)FFRfYpLW;q+Xdj^h+vq_`7qv?6ODK` zLn8d_60g`3oUn=yJdzO-0nW!ra=4mSMsToSf3!o|)_Bg1S*mnmE#;hUz zmC-IS>NWhp=Hr@(o#^|U#89(P$DJM&QGe``DB_c$3K)OiWW<2SR}_g9GF7qX6fq#z z6NCfFtr9|kzS%txecFaXh1Og#0W01VE&%uZAV8*IGWj)Un}Ux}(vO+y}jB=XyUx=n+ z;3+O{*asdb#NOAdBSn9lB(KLre3n#E*SDX)etNgQ#Y%(8bu;qqyY-)Ux8%#a&$n0J zh%|(2IC5j)dRjCXr18g*zF={3*fqfhN37v%|8fL06E@=|!V483v)9 z$_{_fsj^+qlquu`q~P%C-pFa4$fMek_X|i9yOFgi7BB$aA0z+an{?M>DoW+_(Jdhf z`d|L@$~g{&kWlaaq=9L&haFUsW_%p80v%8V8BTnkK-}xtytiErO3SyGLo{4Q!hV7| zxE04&fZ==F`W&u77_PslRhSn0)Fsno;)d3L-em#je?h?9ip9 zMW4GXv7bbmm*jg(iyg~Y&K*L1$6=lLq`QGUb#YGRc1$ z@=$suK!I{VB7C~yuLG^_`9E?Kup^`|4f;Ar{c@*DkUOa$A2a>s!9gyHzf;a?q6+^k7NZob@7f35@EdR6LB8v zDWDLOsnBupr+C&P8Rm9KM%jc9+BCtaqn8`DI8w5HKC)=dU%w=G+%XyPn_+)_6%9wx z7B16{YxD%s6G$r9?vC2wGqeLPn0`bJS<_QHVJABgcObB&hLQWQR2? znHKdJMwH`?XuMqBm}Vt%BbghixXxh57ua|W@r5=knHedWkwA5XJZ0M)TYexo2S9!x zG4~!fkm3;+k9zUnMH)D-(27u4UfDM?>uOT)N10=#xawHkjD<@bn1SdM6FDw!HjseC`W<2Fc$H8q^_n=mn;T8)BHxs8Ni zBn6{^ZA#Fk3{!#e>+5r~2Tg4l)59}w$@BmXrY0*ys~N2lW1f*|eIPCJzrw(Ng@tZj zdMtQb@x(|$F@rh2(a6u0h2gbb8z`K%Z-d8w0duhkaMdSA1CoCo6T0KSX^d6`II?Pp zcwC6ZfPP*i3S9BTNI@~9LOcTW^Pn-{iYG@hIg&_rREXU|^`2sM-p}J1?$e7HPq&dN z7%)<$C_j-u8@_eV2U^GDbE-$`d!LTjnyMlGQ>->g_|WUL1Fk2W7WEntIAnU-fzk<$ z?=!~LS5D{`*5zO|gb%ykMl3xI)wgNpxkg4TJq^{0OwE35^hJjp9v9KKX1_+|7Vf$|rSTx~t^u&+Yk!x#S-eFZ+^;(Hl8?J{hfBhd1 GrU9Mz=UTh~ delta 2253 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 bJ92H!%R8)Ut6nRyYQy#L<*)w(A{D{{%1~7` diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 9bd2bcfc..132f4465 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"A Light-Touch, One-Function Package": [[0, "a-light-touch-one-function-package"]], "Additional FeatureBuilder Considerations": [[1, "additional-featurebuilder-considerations"]], "Advanced Configuration Columns": [[1, "advanced-configuration-columns"]], "Basic Input Columns": [[1, "basic-input-columns"]], "Certainty": [[30, null]], "Citation": [[29, "citation"], [30, "citation"], [31, "citation"], [32, "citation"], [33, "citation"], [34, "citation"], [35, "citation"], [36, "citation"], [37, "citation"], [38, "citation"], [40, "citation"], [41, "citation"], [42, "citation"], [43, "citation"], [44, "citation"], [45, "citation"], [46, "citation"], [47, "citation"], [48, "citation"], [49, "citation"], [50, "citation"], [51, "citation"], [52, "citation"], [53, "citation"], [54, "citation"], [55, "citation"], [56, "citation"], [57, "citation"], [58, "citation"], [59, "citation"], [60, "citation"]], "Configuring the FeatureBuilder": [[1, "configuring-the-featurebuilder"]], "Content Word Accommodation": [[31, null]], "Contents:": [[61, null]], "Conversation Parameters": [[1, "conversation-parameters"]], "Conversation-Level Features": [[11, "conversation-level-features"], [39, "conversation-level-features"]], "Conversational Repair": [[32, null]], "Customizable Parameters": [[0, "customizable-parameters"]], "Dale-Chall Score": [[33, null]], "Declaring a FeatureBuilder": [[61, "declaring-a-featurebuilder"]], "Demo / Sample Code": [[0, "demo-sample-code"], [1, "demo-sample-code"]], "Discursive Diversity": [[34, null]], "Example:": [[41, "example"]], "FEATURE NAME": [[29, null]], "Feature Column Names": [[1, "feature-column-names"], [61, "feature-column-names"]], "Feature Documentation": [[62, "feature-documentation"]], "Feature Information": [[1, "feature-information"], [61, "feature-information"]], "Features: Conceptual Documentation": [[39, null]], "Features: Technical Documentation": [[11, null]], "Forward Flow": [[35, null]], "Function Word Accommodation": [[36, null]], "Generating Features: Utterance-, Speaker-, and Conversation-Level": [[62, "generating-features-utterance-speaker-and-conversation-level"]], "Getting Started": [[1, "getting-started"], [61, "getting-started"], [62, "getting-started"]], "Gini Coefficient": [[37, null]], "Hedge": [[38, null]], "High*Level Intuition": [[54, "high-level-intuition"]], "High-Level Intuition": [[29, "high-level-intuition"], [30, "high-level-intuition"], [31, "high-level-intuition"], [32, "high-level-intuition"], [33, "high-level-intuition"], [34, "high-level-intuition"], [35, "high-level-intuition"], [36, "high-level-intuition"], [37, "high-level-intuition"], [38, "high-level-intuition"], [40, "high-level-intuition"], [41, "high-level-intuition"], [42, "high-level-intuition"], [43, "high-level-intuition"], [44, "high-level-intuition"], [45, "high-level-intuition"], [46, "high-level-intuition"], [47, "high-level-intuition"], [48, "high-level-intuition"], [49, "high-level-intuition"], [50, "high-level-intuition"], [51, "high-level-intuition"], [52, "high-level-intuition"], [53, "high-level-intuition"], [55, "high-level-intuition"], [56, "high-level-intuition"], [57, "high-level-intuition"], [58, "high-level-intuition"], [59, "high-level-intuition"], [60, "high-level-intuition"]], "Implementation": [[32, "implementation"], [42, "implementation"], [52, "implementation"], [54, "implementation"]], "Implementation Basics": [[29, "implementation-basics"], [30, "implementation-basics"], [31, "implementation-basics"], [33, "implementation-basics"], [34, "implementation-basics"], [35, "implementation-basics"], [36, "implementation-basics"], [37, "implementation-basics"], [38, "implementation-basics"], [40, "implementation-basics"], [41, "implementation-basics"], [43, "implementation-basics"], [44, "implementation-basics"], [45, "implementation-basics"], [46, "implementation-basics"], [47, "implementation-basics"], [48, "implementation-basics"], [49, "implementation-basics"], [50, "implementation-basics"], [51, "implementation-basics"], [53, "implementation-basics"], [55, "implementation-basics"], [56, "implementation-basics"], [57, "implementation-basics"], [58, "implementation-basics"], [59, "implementation-basics"], [60, "implementation-basics"]], "Implementation Notes/Caveats": [[29, "implementation-notes-caveats"], [30, "implementation-notes-caveats"], [31, "implementation-notes-caveats"], [33, "implementation-notes-caveats"], [34, "implementation-notes-caveats"], [35, "implementation-notes-caveats"], [36, "implementation-notes-caveats"], [38, "implementation-notes-caveats"], [40, "implementation-notes-caveats"], [41, "implementation-notes-caveats"], [43, "implementation-notes-caveats"], [44, "implementation-notes-caveats"], [45, "implementation-notes-caveats"], [46, "implementation-notes-caveats"], [47, "implementation-notes-caveats"], [48, "implementation-notes-caveats"], [49, "implementation-notes-caveats"], [50, "implementation-notes-caveats"], [51, "implementation-notes-caveats"], [53, "implementation-notes-caveats"], [55, "implementation-notes-caveats"], [56, "implementation-notes-caveats"], [57, "implementation-notes-caveats"], [58, "implementation-notes-caveats"], [59, "implementation-notes-caveats"]], "Import Recommendations: Virtual Environment and Pip": [[1, "import-recommendations-virtual-environment-and-pip"], [61, "import-recommendations-virtual-environment-and-pip"]], "Importing the Package": [[1, "importing-the-package"]], "Indices and Tables": [[61, "indices-and-tables"]], "Information Diversity": [[40, null]], "Information Exchange": [[41, null]], "Input File": [[34, "id2"]], "Inspecting Generated Features": [[1, "inspecting-generated-features"], [61, "inspecting-generated-features"]], "Interpretation:": [[41, "interpretation"]], "Interpreting the Feature": [[29, "interpreting-the-feature"], [30, "interpreting-the-feature"], [31, "interpreting-the-feature"], [32, "interpreting-the-feature"], [33, "interpreting-the-feature"], [34, "interpreting-the-feature"], [35, "interpreting-the-feature"], [36, "interpreting-the-feature"], [37, "interpreting-the-feature"], [38, "interpreting-the-feature"], [40, "interpreting-the-feature"], [41, "interpreting-the-feature"], [42, "interpreting-the-feature"], [43, "interpreting-the-feature"], [44, "interpreting-the-feature"], [45, "interpreting-the-feature"], [46, "interpreting-the-feature"], [47, "interpreting-the-feature"], [48, "interpreting-the-feature"], [49, "interpreting-the-feature"], [50, "interpreting-the-feature"], [51, "interpreting-the-feature"], [52, "interpreting-the-feature"], [53, "interpreting-the-feature"], [54, "interpreting-the-feature"], [55, "interpreting-the-feature"], [56, "interpreting-the-feature"], [57, "interpreting-the-feature"], [58, "interpreting-the-feature"], [59, "interpreting-the-feature"], [60, "interpreting-the-feature"]], "Introduction": [[62, null]], "Key Assumptions and Parameters": [[0, "key-assumptions-and-parameters"]], "Linguistic Inquiry and Word Count (LIWC) and Other Lexicons": [[42, null]], "Message Length": [[43, null]], "Message Quantity": [[44, null]], "Mimicry (BERT)": [[45, null]], "Motivation": [[62, "motivation"]], "Moving Mimicry": [[46, null]], "Named Entity Recognition": [[47, null]], "Named Entity Training Examples": [[47, "id2"]], "Online Discussion Tags": [[48, null]], "Other Utilities": [[69, "other-utilities"]], "Ouput File": [[34, "id3"]], "Our Team": [[62, "our-team"]], "Output File": [[30, "id2"], [35, "id2"], [45, "id2"], [46, "id2"], [47, "id3"], [51, "id1"]], "Output File Naming Details": [[1, "output-file-naming-details"]], "Package Assumptions": [[0, "package-assumptions"]], "Politeness Strategies": [[50, null]], "Politeness/Receptiveness Markers": [[49, null]], "Positivity Z-Score": [[52, null]], "Proportion of First Person Pronouns": [[53, null]], "Question (Naive)": [[54, null]], "Related Features": [[29, "related-features"], [30, "related-features"], [31, "related-features"], [32, "related-features"], [33, "related-features"], [34, "related-features"], [35, "related-features"], [36, "related-features"], [37, "related-features"], [38, "related-features"], [40, "related-features"], [41, "related-features"], [42, "related-features"], [43, "related-features"], [44, "related-features"], [45, "related-features"], [46, "related-features"], [47, "related-features"], [48, "related-features"], [49, "related-features"], [50, "related-features"], [51, "related-features"], [52, "related-features"], [53, "related-features"], [54, "related-features"], [55, "related-features"], [56, "related-features"], [57, "related-features"], [58, "related-features"], [59, "related-features"], [60, "related-features"]], "Sentiment (RoBERTa)": [[51, null]], "Speaker Turn Counts": [[59, "id2"]], "Speaker- (User) Level Features": [[11, "speaker-user-level-features"]], "Table of Contents": [[61, "table-of-contents"]], "Team Burstiness": [[55, null]], "Textblob Polarity": [[56, null]], "Textblob Subjectivity": [[57, null]], "The Basics": [[0, null]], "The FeatureBuilder": [[62, "the-featurebuilder"]], "The Team Communication Toolkit": [[61, null]], "Time Difference": [[58, null]], "Troubleshooting": [[1, "troubleshooting"], [61, "troubleshooting"]], "Turn Taking Index": [[59, null]], "Turns": [[1, "turns"]], "Using the Package": [[61, "using-the-package"]], "Utilities": [[69, null]], "Utterance- (Chat) Level Features": [[11, "utterance-chat-level-features"], [39, "utterance-chat-level-features"]], "Vector Directory": [[1, "vector-directory"]], "Walkthrough: Running the FeatureBuilder on Your Data": [[1, "walkthrough-running-the-featurebuilder-on-your-data"]], "Word Type-Token Ratio": [[60, null]], "Worked Example": [[1, null]], "assign_chunk_nums module": [[63, null]], "basic_features module": [[3, null]], "burstiness module": [[4, null]], "calculate_chat_level_features module": [[64, null]], "calculate_conversation_level_features module": [[65, null]], "calculate_user_level_features module": [[66, null]], "certainty module": [[5, null]], "check_embeddings module": [[67, null]], "discursive_diversity module": [[6, null]], "feature_builder module": [[2, null]], "fflow module": [[7, null]], "get_all_DD_features module": [[8, null]], "get_user_network module": [[9, null]], "gini_coefficient module": [[68, null]], "hedge module": [[10, null]], "info_exchange_zscore module": [[12, null]], "information_diversity module": [[13, null]], "lexical_features_v2 module": [[14, null]], "named_entity_recognition_features module": [[15, null]], "other_lexical_features module": [[16, null]], "politeness_features module": [[17, null]], "politeness_v2 module": [[18, null]], "politeness_v2_helper module": [[19, null]], "preload_word_lists module": [[70, null]], "preprocess module": [[71, null]], "question_num module": [[20, null]], "readability module": [[21, null]], "reddit_tags module": [[22, null]], "summarize_features module": [[72, null]], "temporal_features module": [[23, null]], "textblob_sentiment_analysis module": [[24, null]], "turn_taking_features module": [[25, null]], "variance_in_DD module": [[26, null]], "within_person_discursive_range module": [[27, null]], "word_mimicry module": [[28, null]], "z-scores:": [[41, "z-scores"]], "zscore_chats_and_conversation module": [[73, null]], "\u201cDriver\u201d Classes: Utterance-, Conversation-, and Speaker-Level Features": [[69, "driver-classes-utterance-conversation-and-speaker-level-features"]]}, "docnames": ["basics", "examples", "feature_builder", "features/basic_features", "features/burstiness", "features/certainty", "features/discursive_diversity", "features/fflow", "features/get_all_DD_features", "features/get_user_network", "features/hedge", "features/index", "features/info_exchange_zscore", "features/information_diversity", "features/lexical_features_v2", "features/named_entity_recognition_features", "features/other_lexical_features", "features/politeness_features", "features/politeness_v2", "features/politeness_v2_helper", "features/question_num", "features/readability", "features/reddit_tags", "features/temporal_features", "features/textblob_sentiment_analysis", "features/turn_taking_features", "features/variance_in_DD", "features/within_person_discursive_range", "features/word_mimicry", "features_conceptual/TEMPLATE", "features_conceptual/certainty", "features_conceptual/content_word_accommodation", "features_conceptual/conversational_repair", "features_conceptual/dale_chall_score", "features_conceptual/discursive_diversity", "features_conceptual/forward_flow", "features_conceptual/function_word_accommodation", "features_conceptual/gini_coefficient", "features_conceptual/hedge", "features_conceptual/index", "features_conceptual/information_diversity", "features_conceptual/information_exchange", "features_conceptual/liwc", "features_conceptual/message_length", "features_conceptual/message_quantity", "features_conceptual/mimicry_bert", "features_conceptual/moving_mimicry", "features_conceptual/named_entity_recognition", "features_conceptual/online_discussions_tags", "features_conceptual/politeness_receptiveness_markers", "features_conceptual/politeness_strategies", "features_conceptual/positivity_bert", "features_conceptual/positivity_z_score", "features_conceptual/proportion_of_first_person_pronouns", "features_conceptual/questions", "features_conceptual/team_burstiness", "features_conceptual/textblob_polarity", "features_conceptual/textblob_subjectivity", "features_conceptual/time_difference", "features_conceptual/turn_taking_index", "features_conceptual/word_ttr", "index", "intro", "utils/assign_chunk_nums", "utils/calculate_chat_level_features", "utils/calculate_conversation_level_features", "utils/calculate_user_level_features", "utils/check_embeddings", "utils/gini_coefficient", "utils/index", "utils/preload_word_lists", "utils/preprocess", "utils/summarize_features", "utils/zscore_chats_and_conversation"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["basics.rst", "examples.rst", "feature_builder.rst", "features/basic_features.rst", "features/burstiness.rst", "features/certainty.rst", "features/discursive_diversity.rst", "features/fflow.rst", "features/get_all_DD_features.rst", "features/get_user_network.rst", "features/hedge.rst", "features/index.rst", "features/info_exchange_zscore.rst", "features/information_diversity.rst", "features/lexical_features_v2.rst", "features/named_entity_recognition_features.rst", "features/other_lexical_features.rst", "features/politeness_features.rst", "features/politeness_v2.rst", "features/politeness_v2_helper.rst", "features/question_num.rst", "features/readability.rst", "features/reddit_tags.rst", "features/temporal_features.rst", "features/textblob_sentiment_analysis.rst", "features/turn_taking_features.rst", "features/variance_in_DD.rst", "features/within_person_discursive_range.rst", "features/word_mimicry.rst", "features_conceptual/TEMPLATE.rst", "features_conceptual/certainty.rst", "features_conceptual/content_word_accommodation.rst", "features_conceptual/conversational_repair.rst", "features_conceptual/dale_chall_score.rst", "features_conceptual/discursive_diversity.rst", "features_conceptual/forward_flow.rst", "features_conceptual/function_word_accommodation.rst", "features_conceptual/gini_coefficient.rst", "features_conceptual/hedge.rst", "features_conceptual/index.rst", "features_conceptual/information_diversity.rst", "features_conceptual/information_exchange.rst", "features_conceptual/liwc.rst", "features_conceptual/message_length.rst", "features_conceptual/message_quantity.rst", "features_conceptual/mimicry_bert.rst", "features_conceptual/moving_mimicry.rst", "features_conceptual/named_entity_recognition.rst", "features_conceptual/online_discussions_tags.rst", "features_conceptual/politeness_receptiveness_markers.rst", "features_conceptual/politeness_strategies.rst", "features_conceptual/positivity_bert.rst", "features_conceptual/positivity_z_score.rst", "features_conceptual/proportion_of_first_person_pronouns.rst", "features_conceptual/questions.rst", "features_conceptual/team_burstiness.rst", "features_conceptual/textblob_polarity.rst", "features_conceptual/textblob_subjectivity.rst", "features_conceptual/time_difference.rst", "features_conceptual/turn_taking_index.rst", "features_conceptual/word_ttr.rst", "index.rst", "intro.rst", "utils/assign_chunk_nums.rst", "utils/calculate_chat_level_features.rst", "utils/calculate_conversation_level_features.rst", "utils/calculate_user_level_features.rst", "utils/check_embeddings.rst", "utils/gini_coefficient.rst", "utils/index.rst", "utils/preload_word_lists.rst", "utils/preprocess.rst", "utils/summarize_features.rst", "utils/zscore_chats_and_conversation.rst"], "indexentries": {"adverb_limiter() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.adverb_limiter", false]], "assert_key_columns_present() (in module utils.preprocess)": [[71, "utils.preprocess.assert_key_columns_present", false]], "assign_chunk_nums() (in module utils.assign_chunk_nums)": [[63, "utils.assign_chunk_nums.assign_chunk_nums", false]], "bare_command() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.bare_command", false]], "built_spacy_ner() (in module features.named_entity_recognition_features)": [[15, "features.named_entity_recognition_features.built_spacy_ner", false]], "burstiness() (in module features.burstiness)": [[4, "features.burstiness.burstiness", false]], "calculate_chat_level_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_chat_level_features", false]], "calculate_conversation_level_features() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.calculate_conversation_level_features", false]], "calculate_hedge_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_hedge_features", false]], "calculate_id_score() (in module features.information_diversity)": [[13, "features.information_diversity.calculate_ID_score", false]], "calculate_info_diversity() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.calculate_info_diversity", false]], "calculate_named_entities() (in module features.named_entity_recognition_features)": [[15, "features.named_entity_recognition_features.calculate_named_entities", false]], "calculate_num_question_naive() (in module features.question_num)": [[20, "features.question_num.calculate_num_question_naive", false]], "calculate_politeness_sentiment() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_politeness_sentiment", false]], "calculate_politeness_v2() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_politeness_v2", false]], "calculate_team_burstiness() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.calculate_team_burstiness", false]], "calculate_textblob_sentiment() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_textblob_sentiment", false]], "calculate_user_level_features() (utils.calculate_user_level_features.userlevelfeaturescalculator method)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator.calculate_user_level_features", false]], "calculate_vector_word_mimicry() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_vector_word_mimicry", false]], "calculate_word_mimicry() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_word_mimicry", false]], "chat_level_features() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.chat_level_features", false]], "chatlevelfeaturescalculator (class in utils.calculate_chat_level_features)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator", false]], "check_embeddings() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.check_embeddings", false]], "classify_ntri() (in module features.other_lexical_features)": [[16, "features.other_lexical_features.classify_NTRI", false]], "classify_text_dalechall() (in module features.readability)": [[21, "features.readability.classify_text_dalechall", false]], "clean_text() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.clean_text", false]], "coerce_to_date_or_number() (in module features.temporal_features)": [[23, "features.temporal_features.coerce_to_date_or_number", false]], "commit_data() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.commit_data", false]], "compress() (in module utils.preprocess)": [[71, "utils.preprocess.compress", false]], "compute_frequency() (in module features.word_mimicry)": [[28, "features.word_mimicry.compute_frequency", false]], "compute_frequency_per_conv() (in module features.word_mimicry)": [[28, "features.word_mimicry.compute_frequency_per_conv", false]], "computetf() (in module features.word_mimicry)": [[28, "features.word_mimicry.computeTF", false]], "concat_bert_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.concat_bert_features", false]], "conjection_seperator() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.conjection_seperator", false]], "content_mimicry_score() (in module features.word_mimicry)": [[28, "features.word_mimicry.Content_mimicry_score", false]], "content_mimicry_score_per_conv() (in module features.word_mimicry)": [[28, "features.word_mimicry.Content_mimicry_score_per_conv", false]], "conv_level_features() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.conv_level_features", false]], "conv_to_float_arr() (in module features.get_all_dd_features)": [[8, "features.get_all_DD_features.conv_to_float_arr", false]], "conversationlevelfeaturescalculator (class in utils.calculate_conversation_level_features)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator", false]], "count_all_caps() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_all_caps", false]], "count_bullet_points() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_bullet_points", false]], "count_characters() (in module features.basic_features)": [[3, "features.basic_features.count_characters", false]], "count_difficult_words() (in module features.readability)": [[21, "features.readability.count_difficult_words", false]], "count_ellipses() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_ellipses", false]], "count_emojis() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_emojis", false]], "count_emphasis() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_emphasis", false]], "count_line_breaks() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_line_breaks", false]], "count_links() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_links", false]], "count_matches() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.count_matches", false]], "count_messages() (in module features.basic_features)": [[3, "features.basic_features.count_messages", false]], "count_numbering() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_numbering", false]], "count_parentheses() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_parentheses", false]], "count_quotes() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_quotes", false]], "count_responding_to_someone() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_responding_to_someone", false]], "count_spacy_matches() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.count_spacy_matches", false]], "count_syllables() (in module features.readability)": [[21, "features.readability.count_syllables", false]], "count_turn_taking_index() (in module features.turn_taking_features)": [[25, "features.turn_taking_features.count_turn_taking_index", false]], "count_turns() (in module features.turn_taking_features)": [[25, "features.turn_taking_features.count_turns", false]], "count_user_references() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_user_references", false]], "count_words() (in module features.basic_features)": [[3, "features.basic_features.count_words", false]], "create_chunks() (in module utils.assign_chunk_nums)": [[63, "utils.assign_chunk_nums.create_chunks", false]], "create_chunks_messages() (in module utils.assign_chunk_nums)": [[63, "utils.assign_chunk_nums.create_chunks_messages", false]], "create_cumulative_rows() (in module utils.preprocess)": [[71, "utils.preprocess.create_cumulative_rows", false]], "dale_chall_helper() (in module features.readability)": [[21, "features.readability.dale_chall_helper", false]], "feat_counts() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.feat_counts", false]], "feature_builder": [[2, "module-feature_builder", false]], "featurebuilder (class in feature_builder)": [[2, "feature_builder.FeatureBuilder", false]], "features.basic_features": [[3, "module-features.basic_features", false]], "features.burstiness": [[4, "module-features.burstiness", false]], "features.certainty": [[5, "module-features.certainty", false]], "features.discursive_diversity": [[6, "module-features.discursive_diversity", false]], "features.fflow": [[7, "module-features.fflow", false]], "features.get_all_dd_features": [[8, "module-features.get_all_DD_features", false]], "features.get_user_network": [[9, "module-features.get_user_network", false]], "features.hedge": [[10, "module-features.hedge", false]], "features.info_exchange_zscore": [[12, "module-features.info_exchange_zscore", false]], "features.information_diversity": [[13, "module-features.information_diversity", false]], "features.lexical_features_v2": [[14, "module-features.lexical_features_v2", false]], "features.named_entity_recognition_features": [[15, "module-features.named_entity_recognition_features", false]], "features.other_lexical_features": [[16, "module-features.other_lexical_features", false]], "features.politeness_features": [[17, "module-features.politeness_features", false]], "features.politeness_v2": [[18, "module-features.politeness_v2", false]], "features.politeness_v2_helper": [[19, "module-features.politeness_v2_helper", false]], "features.question_num": [[20, "module-features.question_num", false]], "features.readability": [[21, "module-features.readability", false]], "features.reddit_tags": [[22, "module-features.reddit_tags", false]], "features.temporal_features": [[23, "module-features.temporal_features", false]], "features.textblob_sentiment_analysis": [[24, "module-features.textblob_sentiment_analysis", false]], "features.turn_taking_features": [[25, "module-features.turn_taking_features", false]], "features.variance_in_dd": [[26, "module-features.variance_in_DD", false]], "features.within_person_discursive_range": [[27, "module-features.within_person_discursive_range", false]], "features.word_mimicry": [[28, "module-features.word_mimicry", false]], "featurize() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.featurize", false]], "function_mimicry_score() (in module features.word_mimicry)": [[28, "features.word_mimicry.function_mimicry_score", false]], "generate_bert() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.generate_bert", false]], "generate_certainty_pkl() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.generate_certainty_pkl", false]], "generate_lexicon_pkl() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.generate_lexicon_pkl", false]], "generate_vect() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.generate_vect", false]], "get_average() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_average", false]], "get_centroids() (utils.calculate_user_level_features.userlevelfeaturescalculator method)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator.get_centroids", false]], "get_certainty() (in module features.certainty)": [[5, "features.certainty.get_certainty", false]], "get_certainty_score() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.get_certainty_score", false]], "get_content_words_in_message() (in module features.word_mimicry)": [[28, "features.word_mimicry.get_content_words_in_message", false]], "get_conversation_level_aggregates() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.get_conversation_level_aggregates", false]], "get_cosine_similarity() (in module features.discursive_diversity)": [[6, "features.discursive_diversity.get_cosine_similarity", false]], "get_dale_chall_easy_words() (in module utils.preload_word_lists)": [[70, "utils.preload_word_lists.get_dale_chall_easy_words", false]], "get_dale_chall_score_and_classfication() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.get_dale_chall_score_and_classfication", false]], "get_dd() (in module features.discursive_diversity)": [[6, "features.discursive_diversity.get_DD", false]], "get_dd_features() (in module features.get_all_dd_features)": [[8, "features.get_all_DD_features.get_DD_features", false]], "get_dep_pairs() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.get_dep_pairs", false]], "get_dep_pairs_noneg() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.get_dep_pairs_noneg", false]], "get_discursive_diversity_features() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.get_discursive_diversity_features", false]], "get_first_pct_of_chat() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.get_first_pct_of_chat", false]], "get_first_person_words() (in module utils.preload_word_lists)": [[70, "utils.preload_word_lists.get_first_person_words", false]], "get_forward_flow() (in module features.fflow)": [[7, "features.fflow.get_forward_flow", false]], "get_forward_flow() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.get_forward_flow", false]], "get_function_words() (in module utils.preload_word_lists)": [[70, "utils.preload_word_lists.get_function_words", false]], "get_function_words_in_message() (in module features.word_mimicry)": [[28, "features.word_mimicry.get_function_words_in_message", false]], "get_gini() (in module utils.gini_coefficient)": [[68, "utils.gini_coefficient.get_gini", false]], "get_gini_features() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.get_gini_features", false]], "get_info_diversity() (in module features.information_diversity)": [[13, "features.information_diversity.get_info_diversity", false]], "get_info_exchange_wordcount() (in module features.info_exchange_zscore)": [[12, "features.info_exchange_zscore.get_info_exchange_wordcount", false]], "get_liwc_count() (in module features.lexical_features_v2)": [[14, "features.lexical_features_v2.get_liwc_count", false]], "get_max() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_max", false]], "get_mimicry_bert() (in module features.word_mimicry)": [[28, "features.word_mimicry.get_mimicry_bert", false]], "get_min() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_min", false]], "get_moving_mimicry() (in module features.word_mimicry)": [[28, "features.word_mimicry.get_moving_mimicry", false]], "get_named_entity() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.get_named_entity", false]], "get_nan_vector() (in module features.within_person_discursive_range)": [[27, "features.within_person_discursive_range.get_nan_vector", false]], "get_polarity_score() (in module features.textblob_sentiment_analysis)": [[24, "features.textblob_sentiment_analysis.get_polarity_score", false]], "get_politeness_strategies() (in module features.politeness_features)": [[17, "features.politeness_features.get_politeness_strategies", false]], "get_politeness_v2() (in module features.politeness_v2)": [[18, "features.politeness_v2.get_politeness_v2", false]], "get_proportion_first_pronouns() (in module features.other_lexical_features)": [[16, "features.other_lexical_features.get_proportion_first_pronouns", false]], "get_question_words() (in module utils.preload_word_lists)": [[70, "utils.preload_word_lists.get_question_words", false]], "get_reddit_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.get_reddit_features", false]], "get_sentiment() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.get_sentiment", false]], "get_stdev() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_stdev", false]], "get_subjectivity_score() (in module features.textblob_sentiment_analysis)": [[24, "features.textblob_sentiment_analysis.get_subjectivity_score", false]], "get_sum() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_sum", false]], "get_team_burstiness() (in module features.burstiness)": [[4, "features.burstiness.get_team_burstiness", false]], "get_temporal_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.get_temporal_features", false]], "get_time_diff() (in module features.temporal_features)": [[23, "features.temporal_features.get_time_diff", false]], "get_time_diff_startend() (in module features.temporal_features)": [[23, "features.temporal_features.get_time_diff_startend", false]], "get_turn() (in module features.turn_taking_features)": [[25, "features.turn_taking_features.get_turn", false]], "get_turn_id() (in module utils.preprocess)": [[71, "utils.preprocess.get_turn_id", false]], "get_turn_taking_features() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.get_turn_taking_features", false]], "get_unique_pairwise_combos() (in module features.discursive_diversity)": [[6, "features.discursive_diversity.get_unique_pairwise_combos", false]], "get_user_average_dataframe() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_user_average_dataframe", false]], "get_user_level_aggregates() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.get_user_level_aggregates", false]], "get_user_level_averaged_features() (utils.calculate_user_level_features.userlevelfeaturescalculator method)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator.get_user_level_averaged_features", false]], "get_user_level_summary_statistics_features() (utils.calculate_user_level_features.userlevelfeaturescalculator method)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator.get_user_level_summary_statistics_features", false]], "get_user_level_summed_features() (utils.calculate_user_level_features.userlevelfeaturescalculator method)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator.get_user_level_summed_features", false]], "get_user_network() (in module features.get_user_network)": [[9, "features.get_user_network.get_user_network", false]], "get_user_network() (utils.calculate_user_level_features.userlevelfeaturescalculator method)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator.get_user_network", false]], "get_user_sum_dataframe() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_user_sum_dataframe", false]], "get_variance_in_dd() (in module features.variance_in_dd)": [[26, "features.variance_in_DD.get_variance_in_DD", false]], "get_within_person_disc_range() (in module features.within_person_discursive_range)": [[27, "features.within_person_discursive_range.get_within_person_disc_range", false]], "get_word_ttr() (in module features.other_lexical_features)": [[16, "features.other_lexical_features.get_word_TTR", false]], "get_zscore_across_all_chats() (in module utils.zscore_chats_and_conversation)": [[73, "utils.zscore_chats_and_conversation.get_zscore_across_all_chats", false]], "get_zscore_across_all_conversations() (in module utils.zscore_chats_and_conversation)": [[73, "utils.zscore_chats_and_conversation.get_zscore_across_all_conversations", false]], "gini_coefficient() (in module utils.gini_coefficient)": [[68, "utils.gini_coefficient.gini_coefficient", false]], "info_diversity() (in module features.information_diversity)": [[13, "features.information_diversity.info_diversity", false]], "info_exchange() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.info_exchange", false]], "is_hedged_sentence_1() (in module features.hedge)": [[10, "features.hedge.is_hedged_sentence_1", false]], "lexical_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.lexical_features", false]], "liwc_features() (in module features.lexical_features_v2)": [[14, "features.lexical_features_v2.liwc_features", false]], "load_saved_data() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.load_saved_data", false]], "load_to_dict() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.load_to_dict", false]], "load_to_lists() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.load_to_lists", false]], "merge_conv_data_with_original() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.merge_conv_data_with_original", false]], "mimic_words() (in module features.word_mimicry)": [[28, "features.word_mimicry.mimic_words", false]], "module": [[2, "module-feature_builder", false], [3, "module-features.basic_features", false], [4, "module-features.burstiness", false], [5, "module-features.certainty", false], [6, "module-features.discursive_diversity", false], [7, "module-features.fflow", false], [8, "module-features.get_all_DD_features", false], [9, "module-features.get_user_network", false], [10, "module-features.hedge", false], [12, "module-features.info_exchange_zscore", false], [13, "module-features.information_diversity", false], [14, "module-features.lexical_features_v2", false], [15, "module-features.named_entity_recognition_features", false], [16, "module-features.other_lexical_features", false], [17, "module-features.politeness_features", false], [18, "module-features.politeness_v2", false], [19, "module-features.politeness_v2_helper", false], [20, "module-features.question_num", false], [21, "module-features.readability", false], [22, "module-features.reddit_tags", false], [23, "module-features.temporal_features", false], [24, "module-features.textblob_sentiment_analysis", false], [25, "module-features.turn_taking_features", false], [26, "module-features.variance_in_DD", false], [27, "module-features.within_person_discursive_range", false], [28, "module-features.word_mimicry", false], [63, "module-utils.assign_chunk_nums", false], [64, "module-utils.calculate_chat_level_features", false], [65, "module-utils.calculate_conversation_level_features", false], [66, "module-utils.calculate_user_level_features", false], [67, "module-utils.check_embeddings", false], [68, "module-utils.gini_coefficient", false], [70, "module-utils.preload_word_lists", false], [71, "module-utils.preprocess", false], [72, "module-utils.summarize_features", false], [73, "module-utils.zscore_chats_and_conversation", false]], "named_entities() (in module features.named_entity_recognition_features)": [[15, "features.named_entity_recognition_features.named_entities", false]], "num_named_entity() (in module features.named_entity_recognition_features)": [[15, "features.named_entity_recognition_features.num_named_entity", false]], "other_lexical_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.other_lexical_features", false]], "phrase_split() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.phrase_split", false]], "positivity_zscore() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.positivity_zscore", false]], "prep_simple() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.prep_simple", false]], "prep_whole() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.prep_whole", false]], "preprocess_chat_data() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.preprocess_chat_data", false]], "preprocess_conversation_columns() (in module utils.preprocess)": [[71, "utils.preprocess.preprocess_conversation_columns", false]], "preprocess_naive_turns() (in module utils.preprocess)": [[71, "utils.preprocess.preprocess_naive_turns", false]], "preprocess_text() (in module utils.preprocess)": [[71, "utils.preprocess.preprocess_text", false]], "preprocess_text_lowercase_but_retain_punctuation() (in module utils.preprocess)": [[71, "utils.preprocess.preprocess_text_lowercase_but_retain_punctuation", false]], "preprocessing() (in module features.information_diversity)": [[13, "features.information_diversity.preprocessing", false]], "punctuation_seperator() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.punctuation_seperator", false]], "question() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.Question", false]], "read_in_lexicons() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.read_in_lexicons", false]], "reduce_chunks() (in module utils.assign_chunk_nums)": [[63, "utils.assign_chunk_nums.reduce_chunks", false]], "remove_active_user() (in module features.get_user_network)": [[9, "features.get_user_network.remove_active_user", false]], "save_features() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.save_features", false]], "sentence_pad() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.sentence_pad", false]], "sentence_split() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.sentence_split", false]], "sentenciser() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.sentenciser", false]], "set_self_conv_data() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.set_self_conv_data", false]], "text_based_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.text_based_features", false]], "token_count() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.token_count", false]], "train_spacy_ner() (in module features.named_entity_recognition_features)": [[15, "features.named_entity_recognition_features.train_spacy_ner", false]], "user_level_features() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.user_level_features", false]], "userlevelfeaturescalculator (class in utils.calculate_user_level_features)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator", false]], "utils.assign_chunk_nums": [[63, "module-utils.assign_chunk_nums", false]], "utils.calculate_chat_level_features": [[64, "module-utils.calculate_chat_level_features", false]], "utils.calculate_conversation_level_features": [[65, "module-utils.calculate_conversation_level_features", false]], "utils.calculate_user_level_features": [[66, "module-utils.calculate_user_level_features", false]], "utils.check_embeddings": [[67, "module-utils.check_embeddings", false]], "utils.gini_coefficient": [[68, "module-utils.gini_coefficient", false]], "utils.preload_word_lists": [[70, "module-utils.preload_word_lists", false]], "utils.preprocess": [[71, "module-utils.preprocess", false]], "utils.summarize_features": [[72, "module-utils.summarize_features", false]], "utils.zscore_chats_and_conversation": [[73, "module-utils.zscore_chats_and_conversation", false]], "word_start() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.word_start", false]]}, "objects": {"": [[2, 0, 0, "-", "feature_builder"]], "feature_builder": [[2, 1, 1, "", "FeatureBuilder"]], "feature_builder.FeatureBuilder": [[2, 2, 1, "", "chat_level_features"], [2, 2, 1, "", "conv_level_features"], [2, 2, 1, "", "featurize"], [2, 2, 1, "", "get_first_pct_of_chat"], [2, 2, 1, "", "merge_conv_data_with_original"], [2, 2, 1, "", "preprocess_chat_data"], [2, 2, 1, "", "save_features"], [2, 2, 1, "", "set_self_conv_data"], [2, 2, 1, "", "user_level_features"]], "features": [[3, 0, 0, "-", "basic_features"], [4, 0, 0, "-", "burstiness"], [5, 0, 0, "-", "certainty"], [6, 0, 0, "-", "discursive_diversity"], [7, 0, 0, "-", "fflow"], [8, 0, 0, "-", "get_all_DD_features"], [9, 0, 0, "-", "get_user_network"], [10, 0, 0, "-", "hedge"], [12, 0, 0, "-", "info_exchange_zscore"], [13, 0, 0, "-", "information_diversity"], [14, 0, 0, "-", "lexical_features_v2"], [15, 0, 0, "-", "named_entity_recognition_features"], [16, 0, 0, "-", "other_lexical_features"], [17, 0, 0, "-", "politeness_features"], [18, 0, 0, "-", "politeness_v2"], [19, 0, 0, "-", "politeness_v2_helper"], [20, 0, 0, "-", "question_num"], [21, 0, 0, "-", "readability"], [22, 0, 0, "-", "reddit_tags"], [23, 0, 0, "-", "temporal_features"], [24, 0, 0, "-", "textblob_sentiment_analysis"], [25, 0, 0, "-", "turn_taking_features"], [26, 0, 0, "-", "variance_in_DD"], [27, 0, 0, "-", "within_person_discursive_range"], [28, 0, 0, "-", "word_mimicry"]], "features.basic_features": [[3, 3, 1, "", "count_characters"], [3, 3, 1, "", "count_messages"], [3, 3, 1, "", "count_words"]], "features.burstiness": [[4, 3, 1, "", "burstiness"], [4, 3, 1, "", "get_team_burstiness"]], "features.certainty": [[5, 3, 1, "", "get_certainty"]], "features.discursive_diversity": [[6, 3, 1, "", "get_DD"], [6, 3, 1, "", "get_cosine_similarity"], [6, 3, 1, "", "get_unique_pairwise_combos"]], "features.fflow": [[7, 3, 1, "", "get_forward_flow"]], "features.get_all_DD_features": [[8, 3, 1, "", "conv_to_float_arr"], [8, 3, 1, "", "get_DD_features"]], "features.get_user_network": [[9, 3, 1, "", "get_user_network"], [9, 3, 1, "", "remove_active_user"]], "features.hedge": [[10, 3, 1, "", "is_hedged_sentence_1"]], "features.info_exchange_zscore": [[12, 3, 1, "", "get_info_exchange_wordcount"]], "features.information_diversity": [[13, 3, 1, "", "calculate_ID_score"], [13, 3, 1, "", "get_info_diversity"], [13, 3, 1, "", "info_diversity"], [13, 3, 1, "", "preprocessing"]], "features.lexical_features_v2": [[14, 3, 1, "", "get_liwc_count"], [14, 3, 1, "", "liwc_features"]], "features.named_entity_recognition_features": [[15, 3, 1, "", "built_spacy_ner"], [15, 3, 1, "", "calculate_named_entities"], [15, 3, 1, "", "named_entities"], [15, 3, 1, "", "num_named_entity"], [15, 3, 1, "", "train_spacy_ner"]], "features.other_lexical_features": [[16, 3, 1, "", "classify_NTRI"], [16, 3, 1, "", "get_proportion_first_pronouns"], [16, 3, 1, "", "get_word_TTR"]], "features.politeness_features": [[17, 3, 1, "", "get_politeness_strategies"]], "features.politeness_v2": [[18, 3, 1, "", "get_politeness_v2"]], "features.politeness_v2_helper": [[19, 3, 1, "", "Question"], [19, 3, 1, "", "adverb_limiter"], [19, 3, 1, "", "bare_command"], [19, 3, 1, "", "clean_text"], [19, 3, 1, "", "commit_data"], [19, 3, 1, "", "conjection_seperator"], [19, 3, 1, "", "count_matches"], [19, 3, 1, "", "count_spacy_matches"], [19, 3, 1, "", "feat_counts"], [19, 3, 1, "", "get_dep_pairs"], [19, 3, 1, "", "get_dep_pairs_noneg"], [19, 3, 1, "", "load_saved_data"], [19, 3, 1, "", "load_to_dict"], [19, 3, 1, "", "load_to_lists"], [19, 3, 1, "", "phrase_split"], [19, 3, 1, "", "prep_simple"], [19, 3, 1, "", "prep_whole"], [19, 3, 1, "", "punctuation_seperator"], [19, 3, 1, "", "sentence_pad"], [19, 3, 1, "", "sentence_split"], [19, 3, 1, "", "sentenciser"], [19, 3, 1, "", "token_count"], [19, 3, 1, "", "word_start"]], "features.question_num": [[20, 3, 1, "", "calculate_num_question_naive"]], "features.readability": [[21, 3, 1, "", "classify_text_dalechall"], [21, 3, 1, "", "count_difficult_words"], [21, 3, 1, "", "count_syllables"], [21, 3, 1, "", "dale_chall_helper"]], "features.reddit_tags": [[22, 3, 1, "", "count_all_caps"], [22, 3, 1, "", "count_bullet_points"], [22, 3, 1, "", "count_ellipses"], [22, 3, 1, "", "count_emojis"], [22, 3, 1, "", "count_emphasis"], [22, 3, 1, "", "count_line_breaks"], [22, 3, 1, "", "count_links"], [22, 3, 1, "", "count_numbering"], [22, 3, 1, "", "count_parentheses"], [22, 3, 1, "", "count_quotes"], [22, 3, 1, "", "count_responding_to_someone"], [22, 3, 1, "", "count_user_references"]], "features.temporal_features": [[23, 3, 1, "", "coerce_to_date_or_number"], [23, 3, 1, "", "get_time_diff"], [23, 3, 1, "", "get_time_diff_startend"]], "features.textblob_sentiment_analysis": [[24, 3, 1, "", "get_polarity_score"], [24, 3, 1, "", "get_subjectivity_score"]], "features.turn_taking_features": [[25, 3, 1, "", "count_turn_taking_index"], [25, 3, 1, "", "count_turns"], [25, 3, 1, "", "get_turn"]], "features.variance_in_DD": [[26, 3, 1, "", "get_variance_in_DD"]], "features.within_person_discursive_range": [[27, 3, 1, "", "get_nan_vector"], [27, 3, 1, "", "get_within_person_disc_range"]], "features.word_mimicry": [[28, 3, 1, "", "Content_mimicry_score"], [28, 3, 1, "", "Content_mimicry_score_per_conv"], [28, 3, 1, "", "computeTF"], [28, 3, 1, "", "compute_frequency"], [28, 3, 1, "", "compute_frequency_per_conv"], [28, 3, 1, "", "function_mimicry_score"], [28, 3, 1, "", "get_content_words_in_message"], [28, 3, 1, "", "get_function_words_in_message"], [28, 3, 1, "", "get_mimicry_bert"], [28, 3, 1, "", "get_moving_mimicry"], [28, 3, 1, "", "mimic_words"]], "utils": [[63, 0, 0, "-", "assign_chunk_nums"], [64, 0, 0, "-", "calculate_chat_level_features"], [65, 0, 0, "-", "calculate_conversation_level_features"], [66, 0, 0, "-", "calculate_user_level_features"], [67, 0, 0, "-", "check_embeddings"], [68, 0, 0, "-", "gini_coefficient"], [70, 0, 0, "-", "preload_word_lists"], [71, 0, 0, "-", "preprocess"], [72, 0, 0, "-", "summarize_features"], [73, 0, 0, "-", "zscore_chats_and_conversation"]], "utils.assign_chunk_nums": [[63, 3, 1, "", "assign_chunk_nums"], [63, 3, 1, "", "create_chunks"], [63, 3, 1, "", "create_chunks_messages"], [63, 3, 1, "", "reduce_chunks"]], "utils.calculate_chat_level_features": [[64, 1, 1, "", "ChatLevelFeaturesCalculator"]], "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator": [[64, 2, 1, "", "calculate_chat_level_features"], [64, 2, 1, "", "calculate_hedge_features"], [64, 2, 1, "", "calculate_politeness_sentiment"], [64, 2, 1, "", "calculate_politeness_v2"], [64, 2, 1, "", "calculate_textblob_sentiment"], [64, 2, 1, "", "calculate_vector_word_mimicry"], [64, 2, 1, "", "calculate_word_mimicry"], [64, 2, 1, "", "concat_bert_features"], [64, 2, 1, "", "get_certainty_score"], [64, 2, 1, "", "get_dale_chall_score_and_classfication"], [64, 2, 1, "", "get_forward_flow"], [64, 2, 1, "", "get_named_entity"], [64, 2, 1, "", "get_reddit_features"], [64, 2, 1, "", "get_temporal_features"], [64, 2, 1, "", "info_exchange"], [64, 2, 1, "", "lexical_features"], [64, 2, 1, "", "other_lexical_features"], [64, 2, 1, "", "positivity_zscore"], [64, 2, 1, "", "text_based_features"]], "utils.calculate_conversation_level_features": [[65, 1, 1, "", "ConversationLevelFeaturesCalculator"]], "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator": [[65, 2, 1, "", "calculate_conversation_level_features"], [65, 2, 1, "", "calculate_info_diversity"], [65, 2, 1, "", "calculate_team_burstiness"], [65, 2, 1, "", "get_conversation_level_aggregates"], [65, 2, 1, "", "get_discursive_diversity_features"], [65, 2, 1, "", "get_gini_features"], [65, 2, 1, "", "get_turn_taking_features"], [65, 2, 1, "", "get_user_level_aggregates"]], "utils.calculate_user_level_features": [[66, 1, 1, "", "UserLevelFeaturesCalculator"]], "utils.calculate_user_level_features.UserLevelFeaturesCalculator": [[66, 2, 1, "", "calculate_user_level_features"], [66, 2, 1, "", "get_centroids"], [66, 2, 1, "", "get_user_level_averaged_features"], [66, 2, 1, "", "get_user_level_summary_statistics_features"], [66, 2, 1, "", "get_user_level_summed_features"], [66, 2, 1, "", "get_user_network"]], "utils.check_embeddings": [[67, 3, 1, "", "check_embeddings"], [67, 3, 1, "", "generate_bert"], [67, 3, 1, "", "generate_certainty_pkl"], [67, 3, 1, "", "generate_lexicon_pkl"], [67, 3, 1, "", "generate_vect"], [67, 3, 1, "", "get_sentiment"], [67, 3, 1, "", "read_in_lexicons"]], "utils.gini_coefficient": [[68, 3, 1, "", "get_gini"], [68, 3, 1, "", "gini_coefficient"]], "utils.preload_word_lists": [[70, 3, 1, "", "get_dale_chall_easy_words"], [70, 3, 1, "", "get_first_person_words"], [70, 3, 1, "", "get_function_words"], [70, 3, 1, "", "get_question_words"]], "utils.preprocess": [[71, 3, 1, "", "assert_key_columns_present"], [71, 3, 1, "", "compress"], [71, 3, 1, "", "create_cumulative_rows"], [71, 3, 1, "", "get_turn_id"], [71, 3, 1, "", "preprocess_conversation_columns"], [71, 3, 1, "", "preprocess_naive_turns"], [71, 3, 1, "", "preprocess_text"], [71, 3, 1, "", "preprocess_text_lowercase_but_retain_punctuation"]], "utils.summarize_features": [[72, 3, 1, "", "get_average"], [72, 3, 1, "", "get_max"], [72, 3, 1, "", "get_min"], [72, 3, 1, "", "get_stdev"], [72, 3, 1, "", "get_sum"], [72, 3, 1, "", "get_user_average_dataframe"], [72, 3, 1, "", "get_user_sum_dataframe"]], "utils.zscore_chats_and_conversation": [[73, 3, 1, "", "get_zscore_across_all_chats"], [73, 3, 1, "", "get_zscore_across_all_conversations"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function"}, "terms": {"": [0, 1, 2, 4, 5, 9, 11, 13, 25, 28, 29, 31, 32, 34, 35, 36, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 55, 59, 61, 62, 64, 65, 66], "0": [0, 1, 2, 5, 10, 13, 16, 21, 24, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 45, 46, 47, 50, 51, 53, 55, 59, 61], "000": 42, "00222437221134802": [5, 64], "01": 51, "02": 51, "04": 40, "0496": [21, 33], "05": [13, 40, 50, 51], "06": 51, "08": 50, "09": [45, 46, 50], "1": [0, 1, 2, 3, 10, 13, 22, 24, 32, 34, 35, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 53, 55, 56, 57, 59, 61, 62], "10": [1, 5, 6, 21, 24, 33, 42, 59, 61, 64], "100": [1, 21, 33, 37, 42, 47, 62], "1000": 42, "10th": 33, "1145": [21, 24], "1177": [5, 64], "11th": 33, "12": [35, 45, 46, 50], "1287": 6, "12th": 33, "13": 50, "14": 50, "15": [37, 50], "1579": [21, 33], "17": 50, "1948": 33, "195": 36, "1977": 62, "1lpngokujsx": 5, "1st": 50, "1st_person": 50, "1st_person_pl": 50, "1st_person_start": 50, "2": [1, 2, 34, 35, 41, 47, 59, 61, 62], "20": [37, 59], "2004": 42, "2007": [5, 42], "2009": 60, "2012": 55, "2013": [12, 16, 31, 32, 36, 37, 38, 41, 43, 50, 52, 54, 70], "2015": [53, 58, 60], "2016": 4, "2017": 13, "2018": [40, 44, 55], "2019": [35, 52], "2020": [18, 21, 24, 33, 49, 50, 56, 57], "2021": [1, 6, 43, 44], "2022": [13, 34], "2023": [1, 5, 30, 59, 61, 64], "2024": 40, "21": 59, "22": [41, 50], "2384068": 4, "24": [1, 61], "25": 47, "27": 50, "28": 50, "29": 50, "2nd": 50, "2nd_person": 50, "2nd_person_start": 50, "3": [0, 1, 2, 21, 34, 41, 42, 51, 59, 61, 71], "30": 50, "3000": 33, "32": [34, 50], "3432929": [21, 24], "35": 51, "36": 50, "38": 50, "39": 49, "39512260": 68, "3n": 59, "4": [0, 1, 5, 13, 21, 30, 33, 41, 42, 56, 61, 62], "4274": 6, "43": 50, "45": 50, "47": 50, "49": 50, "4pit4bqz6": 5, "4th": [21, 33], "5": [1, 5, 21, 30, 33, 37, 41, 59], "50": [1, 47], "52": 50, "53": 50, "57": 50, "58": 50, "5th": 33, "6": [1, 33, 43], "60": 51, "63": 50, "6365": 21, "64": 67, "68": 47, "6th": 33, "7": [30, 33, 48], "70": 50, "78": [35, 50], "7th": 33, "8": [1, 30, 33], "80": [21, 70], "82": 41, "85": 34, "86": 35, "87": 50, "89": [45, 46], "8th": 33, "9": [2, 5, 21, 30, 33, 40, 47, 50], "9123": 47, "92": 51, "93chall_readability_formula": [21, 70], "94": 15, "95": 47, "97": 51, "9855072464": 47, "9992": 47, "99954": 47, "9th": 33, "A": [1, 2, 4, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 25, 28, 33, 34, 35, 37, 38, 40, 41, 44, 45, 46, 47, 49, 50, 51, 52, 57, 59, 60, 61, 62, 66, 67, 68, 70, 71, 72, 73], "And": [1, 62], "As": [1, 31, 35, 36, 40, 45, 61], "But": [1, 50, 62], "By": [1, 42, 50], "For": [0, 1, 31, 34, 37, 41, 42, 43, 47, 49, 54, 56, 59, 62, 65], "If": [0, 1, 2, 5, 21, 29, 30, 35, 45, 47, 50, 55, 61, 62, 63, 64, 67, 71], "In": [1, 21, 30, 31, 34, 35, 36, 37, 39, 41, 42, 45, 46, 47, 50, 55, 59, 61, 62], "It": [1, 2, 31, 32, 33, 36, 37, 41, 44, 45, 46, 50, 64, 65, 66, 67, 71], "NO": 37, "NOT": [1, 61], "No": [19, 53], "Not": 41, "One": [1, 37, 61], "That": [29, 55], "The": [1, 2, 3, 4, 5, 7, 9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 59, 60, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73], "Then": [1, 55, 61], "There": [1, 11, 32, 61, 66], "These": [1, 11, 17, 32, 34, 42, 48, 52, 61, 62, 69], "To": [0, 1, 29, 31, 34, 37, 40, 55, 56, 57, 61, 62], "WITH": 21, "Will": 50, "_deviat": 55, "_preprocessed_": 0, "abil": [13, 29], "abl": [31, 36, 61], "abort": 1, "about": [1, 12, 29, 31, 36, 41, 47, 61, 62], "abov": [1, 21, 34, 61], "abstract_id": 4, "accept": [0, 1, 58, 61], "access": [0, 1, 15, 61], "accommod": [28, 32, 39, 45, 46, 64, 65, 66], "accord": [21, 37, 59, 64, 70], "accordingli": 63, "account": [1, 29, 32, 42], "accus": 50, "achiev": [50, 62], "acknowledg": 49, "acm": [21, 24], "acommod": 36, "across": [1, 13, 28, 31, 34, 40, 41, 50, 62, 64, 73], "action": 59, "activ": [1, 9, 44, 55, 71], "actual": [41, 56], "ad": [61, 62, 71], "adapt": 59, "add": [0, 1, 2, 21, 51, 61], "addit": [0, 2, 32, 34, 42, 63, 69], "addition": [0, 30, 31, 32, 54], "address": 1, "adjac": 71, "adjust": [0, 21, 37, 63], "advanc": [31, 36], "advantag": 4, "adverb": [19, 31, 36], "adverb_limit": [19, 49], "affect": [0, 1, 29, 35, 44], "affirm": 49, "after": [0, 1, 31, 34, 36, 43, 61, 62, 64], "again": [32, 34], "against": [28, 31, 36, 52], "agarw": 62, "aggreg": [0, 1, 3, 11, 37, 44, 61, 62, 65, 66, 72], "agre": 47, "agreement": 49, "ah": [31, 36], "ai": 62, "aim": [39, 62], "airtim": [37, 62], "al": [1, 5, 16, 18, 21, 24, 30, 31, 32, 33, 34, 35, 36, 38, 42, 43, 44, 49, 50, 52, 53, 54, 56, 57, 58, 59, 60, 64], "algorithm": [56, 57], "align": [35, 51], "all": [0, 1, 2, 6, 12, 13, 15, 19, 22, 28, 30, 31, 34, 35, 36, 37, 40, 41, 42, 46, 48, 49, 51, 52, 55, 58, 61, 62, 64, 66, 71, 73], "allow": 1, "almaatouq": 59, "along": 1, "alongsid": 1, "alphabet": 49, "alphanumer": 71, "alreadi": [0, 1, 2, 4, 10, 12, 16, 67], "also": [0, 1, 2, 28, 30, 31, 32, 34, 36, 37, 38, 42, 47, 51, 54, 60, 61, 62, 64, 65, 67, 69, 71], "alsobai": 59, "altern": 59, "although": [1, 23, 31, 36], "alwai": [1, 55], "am": [31, 36, 42, 54, 62], "amaz": [48, 56], "ambient": 32, "american": 33, "ami": [47, 59, 62], "amic": 62, "among": [36, 37, 52, 55, 62], "amongst": [6, 35, 48], "an": [1, 2, 5, 8, 11, 12, 13, 21, 29, 30, 31, 32, 33, 34, 36, 38, 40, 41, 42, 45, 47, 48, 50, 51, 52, 54, 59, 60, 61, 62, 63, 65, 66, 68], "analys": [1, 62], "analysi": [0, 1, 11, 52, 62, 67, 71], "analyt": 62, "analyz": [0, 1, 2, 13, 14, 16, 17, 19, 20, 21, 22, 24, 28, 43, 52, 62, 67, 71], "analyze_first_pct": [0, 1, 2], "angri": 47, "ani": [0, 1, 29, 31, 33, 38, 54, 62, 71], "annot": [17, 50], "anoth": [30, 34, 36, 48], "answer": 29, "anybodi": [31, 36], "anyth": [1, 2, 23, 31, 36, 56], "anywher": [31, 36], "apartment": 42, "api": 47, "api_refer": 24, "apolog": [17, 50], "apologi": 49, "appear": [0, 15, 28, 31, 37, 38, 42, 64], "append": [1, 17, 64, 65, 66, 67], "appli": [4, 13, 18, 62, 64, 69], "applic": [29, 71], "appreci": 50, "approach": [32, 38, 42, 45, 46, 49, 53, 64], "appropri": [31, 69], "ar": [0, 1, 2, 3, 5, 9, 10, 11, 15, 17, 19, 21, 23, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 51, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 69, 71], "arcross": 34, "area": 62, "aren": [31, 36], "around": 2, "arous": 48, "arrai": [6, 8, 68], "articl": [37, 50], "ask": [20, 47, 54], "ask_ag": 49, "aspect": [50, 62], "assert_key_columns_pres": 71, "assign": [1, 31, 36, 38, 45, 46, 52, 59, 61, 63, 71], "assign_chunk_num": 69, "associ": [4, 15, 21, 29, 30, 31, 32, 36, 40, 45, 46, 47, 48, 61], "assum": [0, 1, 2, 10, 12, 16, 23, 31, 41, 60, 61, 71], "assumpt": [1, 41, 61], "asterisk": 22, "attribut": [1, 11, 34, 51, 52, 56, 62], "author": [5, 31, 36, 59], "auto": 2, "automat": [0, 1, 61, 69], "auxiliari": [31, 36], "avail": [1, 61, 62, 63, 64, 67], "averag": [11, 13, 28, 30, 33, 34, 35, 40, 41, 46, 52, 64, 65, 66, 72], "avil": 62, "avoid": 30, "awar": 29, "awesom": 62, "b": [4, 34, 35, 45, 46, 55, 62], "back": 62, "bag": [32, 38, 42, 45, 46, 49, 53, 56, 57], "bare_command": [19, 49], "base": [0, 1, 2, 15, 18, 19, 31, 32, 34, 35, 36, 37, 40, 42, 51, 52, 53, 54, 55, 56, 57, 61, 62, 63, 64, 65, 66, 71], "basic": [10, 11, 12, 16, 61, 62], "basic_featur": 11, "batch": 67, "batch_num": 1, "batch_siz": 67, "bay": [56, 57], "bbevi": 18, "becaus": [1, 2, 12, 21, 31, 36, 40, 56, 61], "becom": [44, 61, 62], "been": [1, 2, 12, 16, 31, 36, 61], "befor": [0, 1, 2, 17, 31, 36, 45, 48], "beforehand": 64, "begin": [34, 54, 58, 61, 62, 63], "behavior": [0, 2, 62, 63], "being": [4, 13, 14, 16, 17, 20, 21, 24, 31, 32, 36, 43, 47, 51, 55, 56, 60], "belong": [1, 42], "below": [1, 11, 21, 33, 36, 45, 48, 51, 61, 62, 69], "ber": 54, "bert": [0, 1, 31, 35, 36, 39, 46, 61, 64, 67], "bert_path": 67, "bert_sentiment_data": [1, 61, 64], "best": 29, "better": [31, 61], "between": [4, 6, 13, 21, 23, 24, 28, 30, 31, 34, 35, 36, 37, 40, 45, 46, 55, 58, 59, 62, 64, 65], "betwen": 34, "beyond": 2, "big": 59, "binari": [10, 32, 38], "blame": 47, "blob": [1, 24, 61], "block": [22, 32, 48, 59], "blog": 15, "bold": [22, 64], "bool": [2, 63, 67, 71], "bootstrap": 62, "both": [1, 2, 42, 52, 54, 55, 59, 62], "bother": 50, "bottom": 59, "bought": 41, "bound": [29, 35, 36, 37, 42, 52, 55], "boundari": [34, 35], "break": [22, 48, 64], "brief": 44, "broader": 52, "broken": 59, "btw": 50, "bug": [1, 61], "build": [1, 7, 34, 45, 46, 62], "built": 11, "built_spacy_n": 15, "bullet": [22, 48, 64], "bunch": 59, "burst": 58, "bursti": [1, 11, 39, 58, 61, 65], "by_the_wai": 49, "c": [12, 34, 35, 45, 46, 62], "cach": [0, 1, 2, 51, 61], "calcul": [2, 5, 11, 12, 16, 18, 21, 28, 33, 41, 48, 49, 50, 56, 57, 58, 60, 62, 63, 64, 65, 66, 67, 68, 72, 73], "calculate_chat_level_featur": [1, 61, 69], "calculate_conversation_level_featur": 69, "calculate_hedge_featur": 64, "calculate_id_scor": 13, "calculate_info_divers": 65, "calculate_named_ent": 15, "calculate_num_question_na": 20, "calculate_politeness_senti": 64, "calculate_politeness_v2": 64, "calculate_team_bursti": 65, "calculate_textblob_senti": 64, "calculate_user_level_featur": 69, "calculate_vector_word_mimicri": 64, "calculate_word_mimicri": 64, "call": [1, 2, 8, 13, 61, 62, 64, 69], "can": [0, 1, 11, 23, 31, 32, 33, 34, 36, 37, 42, 43, 44, 47, 48, 49, 50, 52, 54, 60, 61, 62, 69], "can_you": 49, "cannot": [1, 31, 36, 45, 46, 49, 62], "cao": [21, 24, 33, 43, 44, 56, 57, 62], "cap": [22, 48, 64], "capit": [0, 2, 48], "captur": [29, 30, 32, 34, 35, 38, 41, 42, 55], "caract": 40, "cardiffnlp": [1, 61], "carefulli": 60, "carri": 31, "casa_token": 5, "case": [1, 13, 16, 28, 29, 30, 31, 36, 37, 41, 45, 46, 51, 55, 56, 59, 61], "casual": 43, "categori": [21, 32, 45, 46, 49, 52], "caus": [31, 32, 36, 59], "caveat": 1, "center": 62, "central": 34, "centroid": [34, 66], "certain": [5, 19, 30, 42, 45, 46, 49], "certainli": 42, "certainti": [11, 38, 39, 42, 64, 67], "cfm": 4, "chall": [1, 21, 39, 64, 70], "chang": [1, 34, 50, 61, 71], "charact": [2, 3, 15, 19, 37, 49, 62, 64, 65, 66, 71], "characterist": 62, "chat": [0, 1, 2, 4, 5, 6, 7, 8, 12, 13, 14, 16, 23, 25, 28, 29, 32, 35, 36, 41, 44, 45, 46, 49, 59, 61, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73], "chat_data": [2, 6, 7, 8, 26, 27, 28, 63, 64, 65, 66, 67, 71], "chat_df": 14, "chat_featur": [1, 61], "chat_level_data": 72, "chat_level_featur": 2, "chatlevelfeaturescalcul": [1, 2, 17, 21, 61, 64, 69], "chats_data": 73, "check": [19, 23, 44, 64, 67, 71], "check_embed": [1, 61, 69], "chen": 62, "choos": 60, "chose": 1, "chronolog": 1, "chunk": [34, 59, 63], "chunk_num": 63, "circlelyt": 13, "citat": [21, 24], "cite": 50, "clarif": [16, 32, 64], "class": [1, 2, 31, 61, 62, 64, 65, 66], "classif": [21, 64], "classifi": [16, 21, 50, 56, 57], "classify_ntri": 16, "classify_text_dalechal": 21, "clean": [2, 17, 19, 67], "clean_text": 19, "clear": 1, "close": [31, 48, 62], "closer": [45, 46, 59], "clue": 62, "cmu": 12, "code": [6, 18, 29, 32, 51, 55, 61, 62, 68], "coeffici": [4, 39, 62, 65, 68], "coerce_to_date_or_numb": 23, "cognit": 62, "col": 2, "colab": [0, 1], "collabor": [59, 62], "collaps": 2, "collect": [1, 2, 34, 49, 50, 52, 61, 62], "colleg": 33, "column": [0, 2, 4, 6, 7, 8, 9, 12, 13, 14, 16, 18, 23, 25, 28, 51, 56, 62, 63, 64, 65, 66, 67, 68, 71, 72, 73], "column_count_frequ": 28, "column_count_mim": 28, "column_mimc": 28, "column_nam": 71, "column_to_summar": 72, "com": [1, 2, 4, 5, 13, 15, 18, 64, 68, 71], "comb": 62, "combin": [0, 1, 6, 28, 64, 71], "come": [1, 12, 13, 21, 32, 33, 58, 61], "comm": [1, 61], "command": [1, 61], "comment": 48, "commit": 23, "commit_data": 19, "common": [0, 32, 62, 64], "commonli": 37, "commun": [0, 1, 11, 44, 48, 55, 60, 62, 64], "companion": 1, "compar": [2, 31, 35, 44, 45, 52, 64, 71, 73], "compat": [1, 61], "complement": [31, 36], "complet": [1, 2, 31, 55], "complex": [0, 35, 43, 50, 62], "compon": 50, "comprehens": [33, 48], "compress": 71, "comput": [0, 2, 4, 5, 6, 10, 11, 12, 13, 14, 28, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 45, 46, 49, 52, 55, 62, 64, 65, 66, 69, 73], "compute_frequ": 28, "compute_frequency_per_conv": 28, "compute_vectors_from_preprocess": [0, 2], "computetf": 28, "conain": 61, "concat_bert_featur": [1, 61, 64], "concaten": [19, 49, 64, 71], "concentr": 55, "concept": [29, 39, 42, 62], "conceptu": [61, 62], "concis": 43, "concret": 29, "conduct": 1, "confid": [2, 5, 15, 30, 47, 64], "conflict": 62, "confound": 44, "congruent": 34, "conjection_seper": 19, "conjunct": [19, 31, 36, 49], "conjunction_start": 49, "connect": 39, "conscious": 35, "consecut": 22, "consequ": 0, "consid": [1, 33, 37], "consider": [61, 62], "consist": [31, 36, 40, 41], "constitut": 41, "constrain": [34, 35], "construct": [11, 55, 62], "constructor": 47, "consult": 5, "contain": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 23, 25, 28, 29, 30, 35, 38, 42, 47, 49, 55, 61, 62, 63, 64, 67, 71, 72, 73], "content": [0, 1, 12, 13, 28, 34, 36, 39, 41, 42, 45, 46, 62, 64, 67], "content_mimicry_scor": 28, "content_mimicry_score_per_conv": 28, "content_word_accommod": 31, "content_word_accommodation_per_conv": 31, "content_word_mimicri": 28, "context": [2, 32, 42, 48, 62, 71], "continu": [56, 57], "contract": 49, "contrast": 39, "contribut": [13, 34, 37, 62], "control": 1, "conv": [1, 61], "conv_data": [2, 65], "conv_features_al": [1, 61], "conv_features_bas": [1, 61], "conv_level_featur": 2, "conv_to_float_arr": 8, "convei": [6, 34, 52], "conveni": [1, 61], "convers": [0, 2, 3, 4, 6, 7, 8, 9, 12, 13, 23, 25, 28, 29, 31, 34, 35, 36, 37, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 52, 55, 58, 59, 61, 63, 64, 65, 66, 68, 71, 72, 73], "conversation_id": [2, 28, 61, 71], "conversation_id_col": [0, 1, 2, 4, 6, 7, 8, 9, 13, 23, 25, 26, 27, 61, 63, 64, 65, 66, 68, 72, 73], "conversation_num": [0, 1, 2, 6, 7, 66, 71, 73], "conversationlevelfeaturescalcul": [2, 65, 69], "convert": [8, 41, 49, 71], "convict": 5, "convokit": [17, 50, 62, 64], "coordin": 55, "copi": [0, 1], "copular": [31, 36], "core": [34, 69], "cornel": 17, "corpu": 50, "corrado": 37, "correl": [41, 55], "correspond": [30, 34, 35, 40, 49, 55, 66], "cosin": [6, 7, 13, 28, 31, 34, 35, 36, 40, 45, 46, 65], "could": [1, 31, 33, 36, 50, 54], "could_you": 49, "couldn": [31, 36], "count": [1, 3, 12, 14, 15, 16, 19, 21, 25, 28, 30, 31, 32, 36, 39, 41, 43, 44, 49, 52, 53, 54, 56, 58, 64, 65, 66], "count_all_cap": 22, "count_bullet_point": 22, "count_charact": 3, "count_difficult_word": 21, "count_ellips": 22, "count_emoji": 22, "count_emphasi": 22, "count_line_break": 22, "count_link": 22, "count_match": [19, 49], "count_messag": 3, "count_numb": 22, "count_parenthes": 22, "count_quot": 22, "count_responding_to_someon": 22, "count_spacy_match": 19, "count_syl": 21, "count_turn": 25, "count_turn_taking_index": 25, "count_user_refer": 22, "count_word": 3, "countabl": 65, "countd": 36, "counterfactu": 50, "cours": [16, 31, 34, 36, 63], "cover": 28, "creat": [0, 1, 2, 13, 19, 31, 40, 42, 61, 62, 64, 65, 66, 71], "create_chunk": 63, "create_chunks_messag": 63, "create_cumulative_row": 71, "credit": 33, "crowd": 13, "csv": [1, 2, 61, 62, 67], "cumul": [1, 2, 71], "cumulative_group": [0, 1, 2, 71], "current": [1, 11, 23, 31, 34, 35, 36, 40, 45, 46, 58, 61, 64, 71], "curt": 43, "custom": [0, 62], "custom_featur": [0, 1, 2, 61], "customiz": 62, "cut": 1, "cutoff": [2, 15, 47, 64], "d": [1, 31, 34, 36, 61], "dale": [1, 21, 39, 64, 70], "dale_chall_help": 21, "danescu": 50, "dash": 22, "data": [0, 2, 6, 7, 8, 9, 13, 19, 20, 32, 37, 40, 41, 47, 51, 55, 61, 62, 63, 64, 65, 66, 67, 68, 71, 72, 73], "datafram": [0, 1, 2, 4, 6, 7, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19, 23, 25, 28, 37, 47, 49, 59, 61, 62, 63, 64, 65, 66, 67, 68, 71, 72, 73], "dataknowsal": 15, "dataset": [1, 2, 9, 12, 13, 28, 31, 41, 47, 52, 61, 64, 65, 66, 73], "date": [1, 61], "datetim": [23, 58], "dcosta": 62, "deal": [50, 59], "death": 1, "debat": 59, "decid": 62, "decis": [1, 13, 62], "declar": [1, 62, 69], "deepli": 62, "default": [0, 1, 2, 5, 13, 16, 30, 34, 35, 42, 47, 62, 63, 66, 67, 71, 73], "defer": [17, 50], "defin": [0, 11, 21, 31, 34, 36, 40, 59, 62, 64, 65, 66, 70], "definit": [1, 3, 44], "degre": [6, 30, 36, 45, 46, 55], "delet": 29, "deliber": 1, "demo": 61, "democrat": 1, "demystifi": 62, "denomin": 59, "densiti": 60, "dep_": 49, "dep_pair": 19, "depend": [0, 1, 10, 19, 32, 49, 52, 61, 63], "deriv": [2, 11, 65, 66], "describ": [1, 11, 62], "descript": [1, 61], "design": [0, 1, 2, 13, 34, 62], "desir": [2, 63, 72], "detail": [0, 33, 41, 43, 61, 62], "detect": [1, 32, 37, 38, 47, 48, 49, 54], "determin": [13, 18, 31, 35, 36, 40, 45, 46, 71], "dev": 24, "develop": [5, 37, 40, 62], "deviat": [4, 5, 29, 40, 41, 55, 58, 65, 72, 73], "df": [4, 8, 9, 12, 13, 16, 18, 23, 28, 63, 71], "dict": [17, 19, 28, 67], "dictionari": [1, 15, 17, 19, 28, 30, 42, 49, 61, 67], "did": [1, 31, 36, 37, 47, 50, 54, 62], "didn": [31, 36], "differ": [0, 1, 2, 4, 11, 12, 23, 28, 29, 31, 34, 36, 37, 39, 40, 44, 45, 46, 47, 49, 55, 62, 63, 64, 65, 66, 71], "differenti": [49, 59], "difficult": [21, 33], "difficult_word": 21, "difficulti": 33, "dimens": [40, 62], "dimension": [34, 35], "dinner": 41, "direct": [34, 43, 45, 47, 50, 69], "direct_quest": [32, 50, 54], "direct_start": 50, "directli": [1, 62, 69], "directori": [0, 2, 19, 61, 65, 67], "disagr": 49, "disagre": 51, "discours": [31, 36], "discret": [31, 36, 45, 46], "discurs": [0, 1, 6, 8, 39, 40, 61, 65, 66], "discursive_divers": 11, "discus": 8, "discuss": [0, 1, 31, 34, 39, 40, 42, 43, 61, 62, 71], "dispers": 68, "displai": [1, 34, 42, 46, 61], "dispos": 1, "distanc": [34, 35, 40], "distinct": [31, 36, 59], "distinguish": 59, "distribut": 31, "div": 16, "diverg": [6, 34, 35], "divers": [0, 1, 6, 8, 13, 39, 61, 65], "divid": [16, 34, 59, 63], "dl": [21, 24], "do": [0, 1, 29, 31, 34, 36, 37, 43, 49, 50, 54, 62, 69], "doc": 19, "doc_top": 13, "document": [1, 17, 61, 69], "doe": [1, 2, 29, 40, 42, 43, 45, 47, 54, 61, 71], "doesn": [0, 1, 2, 29, 31, 36, 45, 61], "doi": [5, 6, 21, 24, 64], "domain": [31, 50], "don": [31, 36, 49, 54, 62, 67], "done": [2, 50], "dot": 22, "doubl": 30, "down": [31, 36], "download": [1, 61], "download_resourc": [1, 61], "downstream": [17, 62], "dozen": 62, "drive": [62, 69], "driver": [2, 61, 64, 65, 66], "drop": [0, 2, 64], "due": [34, 59], "duncan": 62, "duplic": [1, 2, 71], "durat": [58, 63], "dure": [2, 55, 59, 62], "dynam": [59, 61], "e": [0, 1, 2, 4, 15, 20, 29, 30, 31, 32, 34, 35, 36, 37, 38, 41, 42, 47, 48, 49, 52, 54, 56, 59, 61, 63, 65, 66, 71], "e2": [21, 70], "each": [0, 1, 2, 3, 4, 7, 8, 9, 11, 12, 15, 17, 19, 23, 25, 28, 30, 31, 34, 35, 36, 37, 40, 41, 42, 44, 45, 46, 47, 49, 50, 51, 52, 55, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73], "earlier": [0, 1, 2, 42], "easi": [1, 21, 62, 70], "easier": 21, "easili": 33, "easy_word": 21, "eat": 34, "echo": 31, "econom": 37, "edg": [29, 59], "edu": [1, 12, 16, 17, 70], "effect": [1, 41], "effici": 1, "effort": 55, "either": [20, 23, 52, 55], "elaps": [23, 58], "element": [1, 6], "ellips": [22, 48, 64], "els": [1, 22, 47, 64], "embed": [8, 31, 34, 35, 36, 45, 46, 65, 66, 67, 69], "emili": [30, 35, 45, 46, 47, 59, 62], "emoji": [22, 48, 64], "emot": [1, 61], "emoticon": 48, "emphas": [22, 48, 64], "emphasi": 48, "empirica": [1, 2, 71], "emploi": 45, "empti": [0, 2, 13], "en": [1, 21, 24, 61, 70], "en_core_web_sm": [1, 61], "enabl": 71, "enclos": 22, "encod": [1, 8], "encompass": 62, "encount": [1, 34, 35, 61], "encourag": 64, "end": [0, 1, 15, 20, 23, 34, 54, 62, 63], "engag": 43, "engin": 2, "english": [34, 42], "enjoi": 62, "ensur": [0, 1, 40, 49, 61, 63, 67, 71], "entir": [1, 12, 28, 31, 36, 40, 41, 52, 59, 62, 73], "entiti": [0, 1, 2, 15, 39, 64], "entityrecogn": 47, "entri": [1, 28, 61], "ep8dauru1ogvjurwdbof5h6ayfbslvughjyiv31d_as6ppbt": 5, "equal": [1, 21, 23, 34, 37, 40, 55, 59, 61, 62, 63], "equival": [0, 1, 41, 55, 61], "eric": 62, "error": [1, 16, 61], "especi": [41, 62], "essenti": [51, 71], "establish": 31, "estim": 31, "et": [1, 5, 16, 18, 21, 24, 30, 31, 32, 33, 34, 35, 36, 38, 42, 43, 44, 49, 50, 52, 53, 54, 56, 57, 58, 59, 60, 64], "etc": [10, 15, 16, 17, 42], "evalu": [5, 47, 50], "evan": 62, "even": [0, 1, 2, 34, 37, 42, 62, 63, 67], "evenli": [34, 55], "event": [1, 34, 55, 61], "ever": 62, "everi": [1, 4, 13, 31, 34, 35, 36, 61, 62], "everybodi": [31, 36], "everyon": [31, 36, 47, 62], "everyth": [31, 36, 56], "everywher": [31, 36], "evolut": 35, "evolv": [35, 71], "exactli": [1, 2, 71], "examin": [40, 62, 63], "exampl": [0, 10, 11, 15, 21, 24, 29, 31, 32, 34, 37, 42, 43, 48, 50, 51, 54, 56, 59, 60, 61, 62], "example_data": 1, "exce": 15, "exchang": [12, 35, 39, 40, 45, 55, 64], "exclud": [0, 41, 42], "exclus": [41, 42], "excus": 32, "exhibit": 35, "exist": [0, 1, 2, 55, 61, 62, 63, 64, 67], "expand": 49, "expect": [1, 37, 47], "expected_valu": 47, "explain": [0, 29], "explan": [29, 43], "explor": [61, 62], "express": [5, 14, 30, 31, 32, 36, 38, 42, 64], "extend": 1, "extens": [43, 44], "extent": [1, 4, 7, 12, 31, 34, 35, 37, 51, 55, 59, 61], "extern": 48, "extra": 51, "extract": [1, 17, 19, 28, 40, 50, 64], "extrem": [55, 56, 57], "face": [1, 51, 61], "facilit": [62, 71], "fact": [4, 35, 50, 54, 59], "factual": [17, 24, 50], "fail": [1, 61], "fals": [0, 1, 2, 31, 54, 61, 71], "famili": 42, "far": [34, 35, 46, 50, 62], "faster": 14, "feat_count": 19, "featuer": 2, "featur": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 63, 64, 65, 66, 67], "feature_build": [0, 1, 61], "feature_dict": [1, 61], "feature_method": [64, 65], "feature_nam": [1, 61], "featurebuild": [0, 2, 47, 69], "features_conceptu": [1, 61], "few": [48, 62], "fewer": [12, 60], "fflow": 11, "field": [13, 17], "file": [0, 2, 12, 14, 19, 61, 65, 67], "filenam": [1, 2, 19], "filenotfounderror": 67, "fill": 71, "filler": [37, 60], "filler_paus": 49, "filter": [19, 62], "final": [1, 2, 34, 42, 62], "find": [1, 19, 28, 50], "fingertip": 62, "finit": 55, "first": [0, 1, 2, 11, 12, 16, 19, 31, 34, 35, 36, 39, 40, 41, 42, 45, 46, 49, 52, 54, 59, 61, 62, 64, 70, 71], "first_person": 12, "first_person_plur": 49, "first_person_raw": [12, 16], "first_person_singl": 49, "five": 37, "fix": 52, "flag": 71, "float": [2, 4, 5, 6, 8, 10, 13, 14, 16, 21, 24, 25, 28, 68], "floor": 59, "flow": [0, 1, 7, 31, 36, 39, 41, 45, 46, 61, 64], "focal": [31, 36], "focu": 41, "folder": [0, 1, 19], "follow": [1, 2, 16, 17, 29, 31, 32, 33, 41, 42, 47, 49, 50, 53, 55, 59, 60, 61, 64, 65], "for_m": 49, "for_you": 49, "forc": [0, 1, 61], "form": 1, "formal": [1, 61], "formal_titl": 49, "format": [1, 8, 17, 22, 47, 48, 61, 62, 64], "former": [45, 46], "formula": [33, 42, 59, 64, 70], "fornt": 1, "forward": [0, 1, 7, 39, 41, 61, 64], "forward_flow": 35, "found": [1, 5, 28, 30, 33, 61, 69], "four": [1, 8], "fourth": 33, "frac": 55, "fraction": 59, "framework": [49, 50, 62], "frequenc": [28, 31, 44, 64], "frequency_dict": 28, "fridai": 34, "from": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 19, 21, 28, 29, 31, 32, 33, 34, 35, 36, 39, 41, 42, 49, 50, 51, 53, 55, 56, 57, 58, 61, 62, 64, 65, 66, 67, 71], "full": [1, 2, 28, 37], "full_empirical_dataset": 1, "fulli": [32, 48], "functinon": 12, "function": [1, 2, 3, 4, 10, 11, 12, 13, 14, 16, 20, 21, 23, 28, 31, 39, 44, 45, 46, 50, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 69, 70, 71, 72, 73], "function_mimic_word": 28, "function_mimicry_scor": 28, "function_word_mimicri": 28, "function_word_refer": 28, "fund": 62, "further": [1, 2, 61, 71], "futur": [23, 66], "g": [0, 1, 4, 15, 20, 29, 31, 32, 36, 37, 38, 41, 42, 47, 48, 52, 54, 59, 61, 63, 65, 66, 71], "game": [1, 2, 59, 71], "gaug": [33, 52], "gener": [0, 2, 9, 11, 12, 16, 21, 31, 34, 35, 36, 40, 42, 45, 46, 49, 51, 59, 67, 69, 71, 72], "generaliz": 23, "generate_bert": 67, "generate_certainty_pkl": 67, "generate_lexicon_pkl": 67, "generate_vect": 67, "gensim": 40, "get": [0, 16, 20, 21, 28, 30, 31, 36, 49, 66], "get_all_dd_featur": 11, "get_averag": 72, "get_centroid": 66, "get_certainti": 5, "get_certainty_scor": 64, "get_content_words_in_messag": 28, "get_conversation_level_aggreg": 65, "get_cosine_similar": 6, "get_dale_chall_easy_word": [21, 70], "get_dale_chall_score_and_classf": 64, "get_dd": 6, "get_dd_featur": 8, "get_dep_pair": [19, 49], "get_dep_pairs_noneg": [19, 49], "get_discursive_diversity_featur": 65, "get_first_pct_of_chat": 2, "get_first_person_word": [12, 70], "get_forward_flow": [7, 64], "get_function_word": 70, "get_function_words_in_messag": 28, "get_gini": 68, "get_gini_featur": 65, "get_info_divers": 13, "get_info_exchange_wordcount": 12, "get_liwc_count": 14, "get_max": 72, "get_mimicry_bert": 28, "get_min": 72, "get_moving_mimicri": 28, "get_named_ent": 64, "get_nan_vector": 27, "get_polarity_scor": 24, "get_politeness_strategi": 17, "get_politeness_v2": 18, "get_proportion_first_pronoun": 16, "get_question_word": 70, "get_reddit_featur": 64, "get_senti": 67, "get_stdev": 72, "get_subjectivity_scor": 24, "get_sum": 72, "get_team_bursti": 4, "get_temporal_featur": [4, 64], "get_time_diff": 23, "get_time_diff_startend": 23, "get_turn": 25, "get_turn_id": 71, "get_turn_taking_featur": 65, "get_unique_pairwise_combo": 6, "get_user_average_datafram": 72, "get_user_level_aggreg": 65, "get_user_level_averaged_featur": 66, "get_user_level_summary_statistics_featur": 66, "get_user_level_summed_featur": 66, "get_user_network": [11, 66], "get_user_sum_datafram": 72, "get_variance_in_dd": 26, "get_within_person_disc_rang": 27, "get_word_ttr": 16, "get_zscore_across_all_chat": 73, "get_zscore_across_all_convers": 73, "gina": 62, "gini": [39, 62, 65, 68], "gini_coeffici": [11, 69], "github": [0, 1, 2, 18, 71], "give": [0, 1, 29, 37], "give_ag": 49, "given": [5, 6, 13, 14, 28, 30, 31, 33, 34, 35, 36, 40, 41, 55, 59, 66, 67, 71], "go": [1, 34, 35, 45, 46, 50, 62], "goal": 62, "good": [50, 56, 62], "goodby": 49, "googl": [0, 1], "got": [31, 36], "gotta": [31, 36], "grade": 33, "grader": 21, "grai": 35, "grammat": 36, "granularli": 35, "grate": 62, "gratitud": [17, 49, 50], "great": [47, 50, 51, 56, 59, 60, 62], "greater": 55, "greet": 50, "groceri": 41, "group": [0, 1, 2, 4, 13, 29, 33, 34, 41, 52, 59, 62, 68, 71, 72], "grouping_kei": [0, 1, 2, 71], "gt": 22, "guess": 10, "gun": 1, "gy": 15, "gym": 34, "ha": [0, 1, 2, 32, 34, 35, 37, 42, 43, 46, 52, 54, 55, 56, 59, 61, 62, 63, 71], "had": [1, 31, 36, 54, 61], "hadn": [31, 36], "handl": [19, 29, 71], "happen": [1, 2, 55, 62, 63], "happi": 42, "harder": 21, "hashedg": [17, 50], "hasn": [31, 36], "hasneg": 50, "hasposit": 50, "hate": 31, "have": [0, 1, 2, 10, 12, 16, 31, 34, 36, 37, 40, 41, 42, 45, 46, 50, 54, 59, 60, 61, 62, 71], "haven": [31, 36], "he": [1, 31, 36], "header": 18, "hear": 32, "heart": [61, 62], "heat": 1, "heavi": 62, "hedg": [11, 30, 39, 49, 50, 64], "hei": [1, 35, 45, 46, 50], "helena": [47, 62], "hello": [0, 43, 49], "help": [0, 31, 34, 36, 43, 45, 46, 52, 58, 69], "helper": [23, 67], "her": [30, 31, 36], "here": [0, 1, 29, 31, 34, 41, 42, 47, 61, 66], "herself": [31, 36], "hesit": [60, 64], "hi": [31, 35, 36, 43, 45, 46], "hierach": 71, "hierarch": 71, "high": [0, 1, 2, 61, 62, 71], "higher": [21, 31, 34, 36, 40, 41, 42, 44, 45, 46, 55, 60], "highest": 71, "highlight": 1, "him": [31, 36], "himself": [31, 36], "hmm": [31, 36], "hoc": 62, "hold": 31, "hole": 62, "home": 42, "homework": 34, "homonym": 31, "hood": 1, "hope": 35, "host": [45, 46], "hour": 48, "how": [1, 5, 28, 29, 30, 31, 34, 35, 36, 39, 43, 45, 51, 52, 54, 56, 62], "howev": [0, 1, 3, 35, 40, 42, 44, 54, 56, 61, 62], "howitwork": 1, "html": [1, 15, 17, 24, 61], "http": [1, 2, 4, 5, 6, 12, 13, 15, 16, 17, 18, 21, 24, 41, 45, 46, 47, 61, 64, 68, 70, 71], "hu": [1, 42, 62], "hug": [1, 51, 61], "huggingfac": 1, "huh": [31, 32, 36], "human": [37, 50, 62], "hyperlink": 48, "hyphen": [1, 61], "hypothet": 42, "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 19, 20, 21, 22, 23, 24, 25, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 71, 73], "iby1": 5, "id": [2, 4, 7, 23, 28, 62, 66, 68, 71, 72, 73], "idea": [12, 35, 40, 47, 51], "ident": [34, 35], "identif": 1, "identifi": [0, 1, 2, 4, 8, 9, 15, 23, 25, 30, 31, 41, 47, 50, 52, 61, 63, 64, 71, 72], "identiif": [13, 71], "ignor": [1, 32], "illustr": [1, 41, 48, 62], "imagin": 1, "immedi": [31, 35, 64], "impact": [1, 60], "impersonal_pronoun": 49, "implement": 64, "impli": 37, "import": [31, 32, 36, 44, 45, 62, 69], "incent": 13, "includ": [0, 1, 2, 10, 17, 22, 31, 32, 35, 36, 42, 45, 46, 51, 52, 56, 61, 62, 66, 71], "inclus": [13, 71], "incongru": [8, 34], "incorpor": [1, 42, 45, 46], "increas": [1, 42, 62], "increment": 71, "independ": 1, "index": [1, 2, 4, 13, 25, 37, 39, 55, 61, 65], "indic": [1, 2, 16, 21, 22, 30, 32, 34, 35, 36, 40, 41, 43, 44, 48, 49, 50, 52, 55, 60, 63, 71], "indirect": 50, "indirect_btw": 50, "indirect_greet": 50, "indirectli": 69, "individu": [0, 1, 5, 11, 31, 34, 37, 45, 50, 59, 60, 62, 72], "inequ": 37, "infer": [1, 51, 67], "influenc": 1, "info": [13, 18, 64], "info_divers": 13, "info_exchang": 64, "info_exchange_wordcount": [41, 64], "info_exchange_zscor": 11, "inform": [6, 11, 12, 13, 24, 32, 34, 39, 48, 62, 64, 65], "informal_titl": 49, "information_divers": 11, "initi": [2, 62, 63, 64, 65, 66], "input": [0, 2, 4, 6, 12, 13, 14, 15, 16, 19, 20, 22, 28, 50, 55, 60, 62, 63, 64, 65, 66, 67, 71, 72], "input_column": [65, 66], "input_data": [25, 68, 72], "input_df": [1, 2, 61, 71], "inquiri": [30, 39, 52], "insid": 1, "insight": 1, "inspir": 15, "instal": [1, 61, 62], "instanc": [1, 22, 50, 59, 66], "instanti": 2, "insteac": 1, "instead": [1, 2, 62], "instruct": [1, 61], "int": [2, 3, 10, 13, 15, 16, 19, 20, 22, 28, 63, 64, 67], "intact": 71, "integ": [13, 40, 47], "intend": 59, "interact": [1, 11, 43, 44, 62, 69], "interconnect": 62, "interest": [1, 61, 62], "interfac": 62, "intermedi": [59, 64], "intern": 29, "interpret": [0, 23], "interrupt": 59, "interv": [58, 65], "introduc": 62, "introduct": [11, 61], "invalid": 67, "invers": 64, "involv": [41, 62, 65], "io": [1, 24, 47, 61], "ipynb": [0, 1], "is_hedged_sentence_1": 10, "isn": [1, 31, 36], "issu": [1, 31, 36, 37, 42, 61], "ital": 64, "italic": 22, "item": [0, 71], "its": [0, 2, 15, 31, 35, 36, 40, 41, 47, 54, 55, 64, 69], "itself": [23, 31, 36, 44], "john": 1, "jonson": 62, "journal": [5, 64], "json": [1, 61], "jurafski": 70, "juri": 1, "juries_df": 1, "jury_conversations_with_outcome_var": 1, "jury_feature_build": 1, "jury_output": 1, "jury_output_chat_level": [1, 61], "jury_output_turn_level": 1, "just": [1, 2, 31, 36, 46, 50, 59, 61, 62], "katharina": 34, "keep": [1, 71], "kei": [1, 2, 4, 19, 28, 30, 54, 61, 71], "keyerror": 71, "keyword": [19, 49], "kind": [10, 62], "kitchen": 42, "knob": 0, "know": [1, 30], "knowledg": 29, "known": [1, 32, 61], "kumar": 62, "kw": 19, "lab": [1, 2, 62, 71], "label": [1, 15, 21, 51], "lack": [31, 38, 45, 46], "languag": [15, 31, 34, 42, 50, 62], "larg": [31, 69], "larger": [0, 31, 61], "last": [1, 31], "late": 32, "later": [0, 1, 2, 42, 61], "latest": [1, 61], "latter": [31, 36], "lda": [13, 40], "learn": [1, 61, 62], "least": [10, 32, 42, 63, 67], "led": 62, "legal": 49, "lemmat": [13, 40], "len": 28, "length": [35, 39, 41, 42, 44], "less": [13, 32, 50, 52, 55, 62, 63], "let": [41, 49, 53], "let_me_know": 49, "letter": [49, 71], "level": [0, 1, 2, 3, 4, 6, 7, 8, 9, 12, 13, 14, 16, 23, 61, 64, 65, 66, 71, 72], "lexic": [10, 12, 14, 16, 31, 32, 36, 42, 60, 62, 64], "lexical_featur": [14, 64], "lexical_features_v2": [10, 11], "lexicon": [5, 10, 14, 30, 39, 50, 52, 67, 69], "lexicons_dict": 67, "librari": [34, 51, 56, 57], "lift": 62, "light": 61, "like": [1, 22, 31, 34, 36, 41, 50, 61, 62], "limiat": 32, "limit": [11, 32, 37, 42, 54], "line": [0, 1, 19, 22, 48, 61, 62, 64], "linear": 64, "linguist": [18, 19, 30, 39, 50, 52], "link": [22, 29, 48, 50, 64], "list": [1, 2, 6, 7, 10, 11, 12, 13, 15, 19, 20, 21, 22, 28, 31, 33, 36, 37, 42, 48, 49, 50, 53, 54, 61, 64, 65, 66, 67, 68, 70, 71], "literatur": 62, "littl": 38, "littlehors": 1, "liu": [42, 52], "live": [1, 54], "liwc": [14, 30, 39, 51, 52, 56, 62], "liwc_featur": [10, 14], "lix": 34, "ll": [1, 31, 36, 61], "load": [19, 69], "load_saved_data": 19, "load_to_dict": 19, "load_to_list": 19, "loc": 15, "local": [1, 51, 61], "locat": [1, 62], "long": [4, 42], "longer": [30, 41, 43, 48, 61, 62], "look": [2, 34, 61, 65, 66], "loos": 36, "lot": [31, 36], "loud": 60, "love": [31, 56], "low": [1, 2, 29, 55, 60, 71], "lower": [21, 31, 33, 36, 41, 42, 44, 55, 60], "lowercas": [2, 13, 40, 48, 49, 71], "lowest": 71, "lpearl": 16, "lst": 6, "m": [30, 31, 36], "made": [1, 23, 35, 59, 61, 62], "magnitud": 55, "mai": [1, 2, 11, 28, 31, 32, 35, 36, 37, 41, 42, 43, 44, 54, 61, 62, 71], "main": [1, 2, 5, 62, 64, 65, 66], "make": [0, 1, 5, 31, 34, 55, 56, 62, 66, 69, 71], "man": 62, "mani": [1, 4, 11, 32, 37, 41, 60, 62, 66], "manner": [55, 62], "manual": [1, 61], "map": [13, 34], "mark": [19, 20, 22, 43, 54, 64, 71], "marker": [18, 32, 39, 42, 50, 51, 52, 54, 56], "marlow": 44, "matarazzo": 62, "match": [1, 5, 16, 19, 30], "math": 34, "matter": [28, 47], "max": 66, "max_num_chunk": 63, "maxim": [34, 35, 37], "maximum": [63, 65, 72], "mayb": [38, 47], "mcfarland": 70, "me": [31, 32, 36, 41, 50, 53], "mean": [0, 1, 4, 6, 11, 13, 21, 29, 31, 34, 36, 40, 41, 42, 47, 55, 56, 58, 61, 62, 65, 66, 73], "meaning": [31, 41, 55], "meaningless": 41, "meant": 39, "measur": [0, 7, 12, 13, 20, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 51, 52, 54, 55, 56, 57, 58, 59, 60, 62, 64, 68], "mechan": 32, "medium": 21, "meet": 48, "member": [13, 34, 37, 55], "merg": [2, 8, 65, 66], "merge_conv_data_with_origin": 2, "messag": [0, 1, 2, 3, 4, 5, 8, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 28, 30, 31, 34, 35, 36, 37, 39, 41, 45, 46, 47, 48, 50, 51, 52, 55, 56, 57, 58, 61, 62, 63, 64, 65, 66, 67, 71, 73], "messaga": 61, "message_col": [0, 1, 2, 12, 13, 14, 61, 64, 65, 67, 71], "message_embed": [6, 7, 8], "message_lower_with_punc": 71, "metadata": [0, 1], "method": [5, 31, 41, 50, 62], "metric": [0, 1, 2, 8, 30, 34, 35, 46, 47, 48, 55, 66], "michael": 1, "mid": [1, 2, 71], "middl": [21, 34, 63], "might": [0, 1, 29, 43, 48, 53], "mikeyeoman": [18, 64], "mileston": 34, "mimic": [28, 31, 36, 45], "mimic_word": 28, "mimick": [28, 31, 64], "mimicri": [0, 1, 28, 31, 35, 36, 39, 61, 64], "mimicry_bert": [45, 46], "mind": [1, 35, 50], "mine": [31, 36, 53, 59], "minim": [0, 41, 60], "minimum": [65, 72], "minu": [12, 41, 64], "minut": [55, 58], "mirror": 1, "miss": [1, 32, 61, 71], "mitig": [31, 36], "mizil": 50, "mm": [31, 36], "mnsc": 6, "modal": 50, "mode": 60, "model": [1, 13, 15, 31, 34, 35, 36, 40, 45, 46, 47, 51, 62, 67], "modif": 35, "modifi": [1, 9, 19, 32, 64], "modul": [0, 1, 11, 34, 49, 61, 69], "monologu": 59, "more": [0, 1, 2, 11, 12, 22, 23, 24, 28, 31, 32, 34, 36, 37, 40, 41, 42, 43, 44, 45, 46, 50, 52, 55, 59, 61, 62, 71], "morn": 1, "most": [24, 31, 55, 62, 69], "motiv": 61, "move": [0, 1, 28, 31, 36, 39, 45, 59, 61], "movi": 31, "much": [1, 28, 31, 34, 35, 36, 45, 62], "multi": [1, 2, 71], "multidimension": [45, 46], "multipl": [0, 1, 2, 19, 62, 71], "must": [1, 6, 62, 71], "my": [30, 31, 35, 36, 45, 46, 50, 53], "my_chat_featur": 1, "my_feature_build": 61, "my_fil": 1, "my_output": 61, "my_output_chat_level": 61, "my_output_conv_level": 61, "my_output_user_level": 61, "my_pandas_datafram": 61, "myself": [31, 36, 53], "n": [35, 45, 46, 47, 57, 59, 60], "n_chat": 59, "na": [5, 33, 43, 44, 48, 49, 50, 53, 58], "naiv": [2, 20, 32, 34, 38, 39, 53, 56, 57, 64], "name": [0, 2, 4, 7, 8, 9, 12, 13, 14, 15, 17, 19, 23, 25, 28, 30, 32, 35, 39, 45, 46, 50, 51, 56, 63, 64, 66, 67, 68, 71, 72, 73], "name_to_train": 47, "named_ent": [15, 47], "named_entity_recognition_featur": 11, "nan": [0, 34], "nate": [35, 45, 46], "nathaniel": [35, 45, 46], "nativ": 50, "natur": [43, 55], "ndarrai": 68, "nearest": [13, 40], "nearli": 62, "necessari": [63, 67], "need": [0, 1, 2, 21, 62, 66, 67], "need_sent": 67, "need_senti": 67, "neg": [1, 24, 29, 31, 34, 35, 36, 42, 50, 51, 52, 54, 56, 61, 62, 67], "negat": [19, 49], "negative_bert": [1, 51, 61], "negative_emot": [49, 51, 52, 56], "negoti": 62, "neighborhood": 54, "neither": 30, "ner": 15, "ner_cutoff": [0, 1, 2, 47, 64], "ner_train": 64, "ner_training_df": [0, 1, 2, 47, 64], "nest": [0, 1, 2, 22, 71], "net": [45, 46], "network": 11, "neutral": [1, 5, 24, 30, 51, 55, 61, 67], "neutral_bert": [1, 51, 61], "never": 1, "new": [1, 4, 13, 34, 61, 64, 65, 66, 72], "new_column_nam": 72, "next": [1, 32, 47, 58], "nice": [1, 50, 54, 61], "nicknam": 1, "niculescu": 50, "night": 31, "nikhil": [59, 62], "nltk": [1, 42, 61], "nobodi": [31, 36], "nois": 32, "non": [1, 2, 28, 31, 37, 48, 61, 62, 71], "none": [1, 2, 19, 23, 37, 55, 61, 64, 65, 66, 67], "nor": 30, "normal": [19, 28, 31], "notabl": 62, "note": [0, 1, 2, 12, 16, 20, 42, 61, 71], "notebook": [0, 1], "noth": [31, 36, 56], "noun": 1, "novel": [45, 46], "now": [0, 1, 2], "nowher": [31, 36], "np": 68, "ntri": 32, "null": 34, "num": 48, "num_char": 65, "num_chunk": [27, 63], "num_hedge_word": 10, "num_messag": 65, "num_named_ent": [15, 47], "num_row": 63, "num_top": 13, "num_word": [12, 16, 65], "number": [0, 3, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 25, 28, 31, 32, 34, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 54, 56, 58, 59, 60, 62, 63, 64, 66, 69, 71, 72], "numer": [0, 1, 13, 33, 68, 72, 73], "numpi": [1, 61, 68], "o": 35, "object": [1, 2, 19, 44, 50, 57, 58, 61, 62, 64, 65, 66], "obtain": [1, 13, 17, 23, 24, 34, 61], "occur": [0, 4, 31, 42, 71], "occurr": 19, "off": [1, 31, 36], "offer": 0, "offici": 61, "often": [28, 36, 47, 48, 62], "oh": [31, 36, 48], "okai": [31, 36], "older": [1, 61], "on_column": [18, 23, 28, 68, 72, 73], "onc": [1, 2, 11, 58, 61, 62], "one": [0, 1, 2, 4, 10, 12, 19, 23, 25, 28, 29, 31, 32, 36, 37, 47, 51, 56, 59, 61, 62, 67, 68, 71, 73], "ones": [31, 36], "onli": [0, 1, 2, 5, 11, 23, 29, 31, 32, 34, 36, 37, 45, 53, 58, 59, 61, 62, 71], "onlin": [1, 32, 39, 64], "onward": 0, "open": [0, 62, 66], "operation": [39, 50, 59], "opinion": [24, 31], "oppos": [2, 31, 34, 35, 55], "opposit": 34, "option": [1, 2, 37, 62, 63, 67, 71], "order": [0, 1, 35, 37, 42, 71], "org": [6, 15, 21, 24, 41, 70], "organ": 1, "origin": [1, 2, 5, 12, 21, 31, 32, 35, 36, 37, 45, 46, 49, 59], "orthogon": 34, "other": [1, 9, 11, 28, 29, 30, 31, 32, 34, 35, 36, 37, 39, 40, 45, 46, 48, 51, 52, 54, 56, 58, 59, 61, 62, 64, 66, 71], "other_lexical_featur": [11, 64], "otherwis": [2, 10, 21, 23, 32, 38, 63, 67], "our": [0, 1, 2, 11, 13, 29, 31, 32, 36, 37, 39, 53, 59, 61, 71], "ourselv": 53, "out": [1, 2, 16, 19, 31, 36, 55, 60, 62], "outcom": [1, 44, 62], "output": [0, 2, 10, 17, 19, 40, 61, 62, 64, 67], "output_file_bas": [0, 1, 2, 61], "output_file_path_chat_level": [1, 2], "output_file_path_conv_level": [1, 2], "output_file_path_user_level": [1, 2], "output_path": 67, "outsid": [1, 2, 12], "over": [1, 16, 29, 31, 34, 35, 36, 37, 53, 55, 60, 62, 71], "overal": [30, 31, 34, 36, 45, 46], "overrid": [0, 1, 2], "overview": [0, 61, 62], "overwritten": 1, "own": [0, 1, 9, 35, 62], "p": 55, "pacakg": 24, "pace": [43, 62], "packag": [17, 18, 40, 62], "pad": 19, "page": [1, 11, 29, 39, 61, 62, 69], "pair": [6, 19, 34, 49, 71], "pairwis": [6, 34], "panda": [0, 1, 2, 12, 14, 16, 23, 47, 64, 65, 66, 71, 72, 73], "paper": [4, 5, 12, 18, 29, 40, 50, 64], "paragraph": 22, "param": 71, "paramet": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 47, 61, 62, 63, 64, 65, 66, 67, 68, 71, 72, 73], "paramt": 1, "pardon": 32, "parenthes": [22, 48, 64], "parenthet": [22, 48], "pars": [16, 50, 60], "part": [1, 10, 13, 29, 36, 42, 52, 71], "particip": [1, 9, 37, 62], "particl": [31, 36], "particular": [11, 31, 32, 34, 41, 45, 47, 51, 59, 62], "particularli": 42, "partner": 32, "pass": [1, 13, 21, 47, 71], "path": [1, 2, 19, 61, 67], "path_in": 19, "pattern": [4, 11, 19, 55, 62, 67], "paus": 4, "pd": [1, 2, 4, 6, 7, 8, 9, 12, 13, 14, 15, 16, 18, 19, 23, 25, 63, 64, 65, 66, 67, 68, 71], "pdf": [5, 12, 13, 16, 18, 21, 24, 64, 70], "penalti": 1, "pennebak": [12, 37, 41, 42, 52], "pennyslvania": 62, "peopl": [1, 32, 59, 62], "per": [1, 6, 9, 19, 42, 63, 66, 72], "percentag": [2, 21], "perfect": [37, 59], "perform": [0, 1, 2, 16, 50], "perhap": 1, "period": [4, 34, 55], "person": [1, 8, 12, 15, 16, 32, 34, 39, 41, 42, 50, 59, 62, 64, 70], "perspect": 1, "petrocelli": 5, "phrase": [19, 30, 38, 54], "phrase_split": 19, "pickl": [19, 67], "piec": [36, 42, 59, 63], "pl": 50, "place": [55, 61, 62], "plan": [34, 35, 45, 46], "player": 59, "pleas": [0, 1, 38, 49, 50, 61, 62], "please_start": 50, "point": [22, 24, 34, 35, 45, 46, 48, 52, 64, 66], "poisson": 55, "polar": [24, 39, 51, 52, 64], "polit": [1, 17, 18, 30, 32, 38, 39, 42, 51, 52, 54, 56, 64], "politeness_featur": 11, "politeness_v2": 11, "politeness_v2_help": 11, "politenessstrategi": [17, 50], "portion": 0, "posit": [0, 1, 11, 15, 24, 29, 31, 39, 42, 50, 51, 54, 56, 61, 62, 64, 67], "positive_affect_lexical_per_100": [51, 52, 56], "positive_bert": [1, 51, 61], "positive_emot": [49, 51, 52, 56], "positivity_bert": [1, 61], "positivity_zscor": 64, "positivity_zscore_chat": 52, "positivity_zscore_convers": 52, "possess": 31, "possibl": [1, 34, 62, 66], "possibli": [38, 62], "practic": [34, 35], "pre": [1, 4, 21, 37, 49, 64], "preced": [31, 35, 71], "precend": 35, "precis": 47, "precomput": 51, "predefin": 19, "predetermin": [31, 36], "predict": [2, 47, 51, 64], "prefer": [0, 1], "preload_word_list": 69, "prep_simpl": 19, "prep_whol": 19, "preposit": [31, 36], "preproces": 48, "preprocess": [0, 1, 2, 13, 19, 40, 43, 49, 51, 61, 69], "preprocess_chat_data": 2, "preprocess_conversation_column": 71, "preprocess_naive_turn": 71, "preprocess_text": 71, "preprocess_text_lowercase_but_retain_punctu": 71, "presenc": [2, 32, 67], "present": [1, 2, 14, 30, 31, 38, 42, 55, 62, 71], "prespecifi": 19, "prevent": 51, "previou": [1, 7, 28, 31, 36, 45, 46, 58, 64, 71], "primari": 34, "print": 2, "prior": [2, 64, 71], "priya": [47, 62], "probabl": [15, 47], "problem": 62, "procedur": 62, "proceed": 46, "process": [0, 1, 2, 4, 10, 21, 37, 55, 62, 64, 65, 67, 69, 71], "prodi": 15, "produc": [2, 34], "product": 15, "professor": 62, "progress": [1, 2], "project": [54, 62], "pronoun": [12, 16, 31, 36, 39, 41, 42, 64, 70], "proper": 1, "properti": [1, 61], "proport": [16, 39, 42, 64], "propos": 37, "provid": [0, 1, 2, 15, 29, 30, 33, 36, 39, 44, 47, 54, 62], "proxi": 42, "pseudonym": 1, "psycholog": 42, "pub": 70, "publish": [5, 30, 64], "pubsonlin": 6, "punctuat": [0, 2, 16, 19, 20, 21, 28, 43, 54, 60, 71], "punctuation_seper": 19, "puncut": 48, "pure": [24, 36], "purpos": 1, "put": [34, 50, 62, 66], "py": [0, 1, 14, 49, 61], "pypi": [1, 61], "python": [1, 32, 41, 56, 57, 61, 62, 68], "qtd": 62, "qualiti": 41, "quantifi": [31, 36, 62], "quantiti": [37, 39, 41, 47], "quartil": 50, "question": [16, 19, 20, 29, 32, 39, 49, 50, 64, 66, 68, 70], "question_num": 11, "question_word": 20, "quick": [1, 43], "quickli": 0, "quit": 40, "quot": [22, 48, 64], "quotat": [22, 48], "rabbit": 62, "rain": 41, "rais": [67, 71], "random": 55, "rang": [5, 8, 24, 30, 33, 34, 35, 40, 51, 53, 55, 56, 57], "ranganath": [16, 31, 32, 36, 38, 43, 54, 70], "ranganath2013": 70, "ranganathetal2013_detectingflirt": 16, "rapid": [1, 4], "rare": [34, 35], "rate": [42, 51], "rather": [1, 31, 34, 35, 36, 37, 45, 46, 63], "ratio": [16, 39, 64], "raw": [0, 12, 16, 21, 31, 33, 42, 50, 64], "re": [1, 31, 36, 42, 50, 61], "read": [0, 1, 2, 16, 21, 29, 33, 61, 62, 64, 65, 66, 67], "read_csv": 1, "read_in_lexicon": 67, "readabl": [11, 33, 64, 70], "reader": 33, "readi": 1, "readili": 62, "readthedoc": [1, 24, 61], "real": [1, 55], "realit": 13, "realli": [31, 36, 50], "reason": [31, 36, 45, 46, 49], "reassur": 49, "recal": 47, "recept": [18, 32, 39, 42, 50, 51, 52, 54, 56, 62, 64], "recogn": [1, 43, 47], "recognit": [0, 1, 2, 39, 64], "recommend": [0, 42, 62], "reddit": [48, 64], "reddit_tag": 11, "redditus": 48, "reduc": 63, "reduce_chunk": 63, "redund": [42, 62], "refer": [0, 1, 11, 22, 24, 28, 31, 42, 48, 52, 61, 62, 64, 70], "reflect": [37, 43], "regardless": 1, "regener": [0, 2, 51, 67], "regenerate_vector": [0, 1, 2, 67], "regex": [14, 16, 49], "regist": 37, "regress": 1, "regular": [5, 14, 30, 32, 42, 55, 58], "reichel": [53, 58, 60], "reidl": [4, 13], "reinvent": 62, "rel": [41, 51, 52, 55, 60, 64], "relat": [1, 61, 62, 64], "relationship": 36, "relev": [1, 29, 42, 44, 49, 51, 56, 61, 64, 65], "reli": [31, 34, 35, 36, 69], "reliabl": [33, 42], "remain": [1, 30, 71], "rememb": 1, "remov": [0, 2, 9, 13, 19, 28, 40, 43, 48, 49, 50, 71], "remove_active_us": 9, "renam": 1, "repair": [16, 39], "repeat": [60, 71], "repetit": 60, "replac": 19, "report": [1, 61], "repres": [2, 4, 6, 7, 11, 13, 23, 31, 34, 36, 42, 45, 46, 66, 67, 68, 71, 72, 73], "represent": [34, 38], "reproduc": [36, 62], "republican": 1, "request": [32, 50, 51], "requir": [0, 1, 20, 21, 31, 55, 61, 62, 64, 65, 66, 67], "research": [1, 2, 62], "reserv": 0, "resolv": 62, "resourc": [1, 39, 48, 61, 62], "respect": [1, 2, 12, 31, 36, 37, 69], "respons": [22, 48, 55, 58, 64], "restaur": [34, 56], "restor": 0, "restrict": 71, "result": [40, 55, 65, 72], "retain": [2, 16, 20, 21, 60, 71], "retriev": 50, "retunr": 3, "return": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 30, 32, 43, 49, 50, 51, 55, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73], "reveal": 62, "revert": 50, "review": 62, "rewrit": 50, "rich": 62, "riedl": [13, 40, 55], "right": [31, 36, 61, 62], "roberta": [1, 39, 42, 52, 56, 61, 64, 67], "robust": 13, "rocklag": [5, 30, 64], "room": 59, "root": [13, 40], "rough": [12, 54], "roughli": 31, "round": [13, 40, 59, 71], "round_num": 1, "row": [0, 1, 2, 9, 13, 25, 37, 40, 59, 63, 68, 71, 72, 73], "rowbotham": 62, "rucker": 5, "rule": [1, 69], "run": [0, 10, 12, 16, 35, 46, 47, 48, 51, 61, 69], "runtim": [1, 35], "sagepub": [5, 64], "sai": [1, 32, 50, 59], "said": [1, 36, 62], "same": [0, 1, 2, 31, 34, 37, 45, 48, 52, 59, 60, 62, 71], "sampl": [61, 62], "sarcast": 48, "save": [0, 1, 2, 19, 64, 67], "save_featur": 2, "sbert": [1, 28, 31, 34, 35, 36, 45, 46, 64, 65, 67], "scale": [42, 51], "schema": 1, "scheme": 0, "school": [21, 62], "scienc": [29, 39, 62], "scientist": [61, 62], "score": [1, 4, 5, 11, 12, 13, 15, 21, 24, 28, 29, 30, 31, 34, 35, 36, 38, 39, 40, 45, 46, 47, 51, 53, 56, 57, 61, 64, 65, 67, 73], "script": [1, 61], "sea": 1, "seamless": 62, "search": [19, 61], "second": [0, 1, 4, 34, 42, 58, 59], "second_person": 49, "secr": [18, 49, 64], "section": [1, 29, 61], "see": [0, 1, 2, 30, 34, 38, 41, 45, 46, 47, 55, 62, 71], "seek": [5, 62], "segment": [0, 19], "select": [2, 4, 23, 28, 36, 45, 66, 67, 68, 71, 72, 73], "self": [1, 2, 61], "semant": [31, 34, 35, 41], "semantic_group": [1, 61], "send": [1, 37, 55], "sens": [5, 31, 54, 66], "sent": [1, 37, 64], "sentenc": [0, 1, 10, 15, 19, 20, 21, 33, 34, 35, 36, 42, 45, 46, 47, 48, 54, 56, 61, 67], "sentence_pad": 19, "sentence_split": 19, "sentence_to_train": 47, "sentencis": 19, "sentiment": [0, 1, 24, 31, 39, 42, 52, 56, 61, 62, 64, 67], "separ": [1, 2, 19, 34, 51], "sepcifi": 1, "septemb": 40, "sequenc": [1, 59], "sequenti": 1, "seri": [12, 16, 23, 28, 42, 71, 73], "serv": 12, "set": [0, 1, 2, 13, 23, 34, 48, 59], "set_self_conv_data": 2, "sever": [1, 30, 41, 42, 48, 51, 56, 61], "shall": 54, "share": [31, 36, 37], "she": [30, 31, 36], "shift": 34, "shop": 62, "short": [55, 58], "shorter": [13, 40, 41, 42, 43], "should": [0, 1, 2, 4, 14, 23, 28, 29, 31, 36, 47, 48, 54, 61, 62, 65, 66, 67, 68, 69, 71, 72, 73], "shouldn": [31, 36], "show": [1, 37, 61], "showeth": 62, "shruti": [35, 45, 46, 47, 62], "side": 31, "signal": [45, 55], "signifi": 42, "signific": [1, 61], "silent": 37, "similar": [1, 6, 7, 13, 28, 29, 31, 34, 35, 36, 40, 45, 46, 49, 62, 65], "similarli": [1, 35], "simpl": [0, 1, 16, 19, 42, 61, 62], "simpli": [1, 5, 11, 28, 56, 62], "simplifi": 1, "simplist": 41, "sinc": [1, 32, 41, 71], "singh": 62, "singl": [0, 1, 2, 11, 12, 19, 23, 31, 34, 35, 36, 37, 41, 45, 46, 59, 62, 71, 72], "singular": [12, 41, 64], "site": 16, "situat": 37, "size": [1, 13, 63, 67], "skip": 1, "slightli": [32, 62, 63], "slow": 1, "small": 40, "so": [1, 2, 10, 30, 31, 36, 37, 50, 61, 62, 66], "social": [29, 39, 61, 62], "socsci": 16, "softwar": 62, "sohi": 62, "sol3": 4, "solut": 59, "solv": 62, "some": [0, 1, 11, 17, 29, 32, 34, 35, 37, 41, 61, 63], "somebodi": [31, 36], "someon": [22, 29, 31, 36, 47, 48, 61, 64], "someplac": [31, 36], "someth": 47, "sometim": 1, "somewhat": 35, "soon": 62, "sorri": [16, 32, 50], "sort": 10, "sound": [47, 51], "sourc": [4, 5, 6, 12, 13, 16, 17, 21, 34, 35, 50, 64, 68], "space": [34, 40, 71], "spaci": [1, 19, 47, 49, 50, 61], "span": 63, "spars": 32, "speak": [1, 31, 36, 37, 59, 60, 62], "speaker": [0, 1, 2, 6, 8, 9, 25, 31, 34, 35, 37, 38, 42, 45, 46, 61, 66, 71, 72], "speaker_id": [2, 61, 72], "speaker_id_col": [0, 1, 2, 6, 8, 9, 25, 26, 27, 61, 65, 66, 71, 72], "speaker_nicknam": [0, 1, 2, 6, 9, 59, 66, 71], "special": [0, 1, 2, 48, 71], "specif": [1, 2, 12, 32, 41, 48, 55, 61, 62, 69, 71], "specifi": [1, 2, 19, 47, 49, 67, 68, 71, 72, 73], "speciifc": 63, "spend": [51, 62], "spike": 55, "split": [19, 21, 43, 63], "spoke": 59, "spoken": [11, 37], "spread": 55, "squar": [13, 40], "ssrn": 4, "stabl": 40, "stack": 14, "stackoverflow": 68, "stage": [1, 2, 34, 71], "stamp": 55, "standard": [1, 4, 37, 40, 41, 49, 55, 58, 60, 65, 72, 73], "stanford": 70, "start": [0, 15, 19, 20, 22, 23, 50], "statement": [1, 38, 42, 47, 48, 61, 62, 64], "statist": [65, 66, 68], "statologi": 41, "stem": 42, "step": [1, 4, 28, 41, 45, 46, 51], "still": [41, 45, 46], "stochast": 40, "stop": [40, 62], "stopword": [13, 19], "store": [1, 12, 16, 41, 49, 51, 61, 65, 67], "stoword": 42, "str": [2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 63, 64, 65, 66, 67, 68, 71, 72, 73], "straightforward": 29, "strategi": [17, 30, 32, 38, 39, 42, 49, 54, 64], "stream": 35, "strictli": 1, "string": [0, 1, 2, 4, 8, 12, 13, 14, 19, 23, 24, 50, 66, 67, 68, 71, 72, 73], "strongli": [1, 41, 61], "structur": [0, 36, 49], "student": [21, 33], "studi": [1, 34, 62], "style": [1, 31, 36, 59], "sub": [0, 1, 71], "subfold": 1, "subject": [5, 24, 28, 39, 49, 64], "subjunct": 50, "sublist": 28, "submiss": 55, "subpart": [1, 71], "subsequ": [1, 30, 51, 58], "subset": 62, "substanc": 36, "substant": 31, "substanti": 1, "substr": 30, "subtask": 1, "subtract": [41, 58], "succe": 62, "success": [0, 1, 4, 31, 36, 43, 55, 58], "suggest": [1, 13, 34, 42, 44, 50], "suit": [62, 64], "sum": [1, 28, 34, 61, 64, 65, 66, 72], "summar": [0, 1, 65, 66, 69], "summari": [65, 66, 72], "summariz": [0, 65], "summarize_featur": 69, "suppl": 6, "support": [1, 15, 61], "suppos": 1, "sure": 30, "swear": 49, "syntax": [1, 32, 61], "system": [2, 59, 64], "t": [0, 1, 2, 15, 29, 31, 36, 45, 49, 54, 61, 62, 67], "tabl": 62, "tag": 39, "take": [1, 4, 5, 9, 14, 25, 29, 31, 34, 37, 39, 42, 55, 61, 65, 71], "taken": [59, 71], "talk": [1, 37, 47, 59, 62], "tandem": [1, 61], "target": 15, "task": [1, 2, 59, 71], "tausczik": [12, 37, 41, 52], "tausczikpennebaker2013": 12, "team": [0, 1, 4, 11, 12, 13, 34, 39, 40, 59, 65], "team_bursti": 4, "team_comm_tool": [1, 61], "teamcommtool": 1, "technic": [29, 39, 61, 62], "teghxgbqdhgaaaaa": 5, "tempor": [0, 2, 55, 58, 64, 71], "temporal_featur": 11, "tend": [1, 34, 60], "term": [1, 28, 59], "termin": [1, 2, 61], "terribl": 51, "test": [13, 33, 47], "text": [0, 1, 2, 3, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 28, 32, 33, 36, 42, 48, 55, 62, 64, 67, 71], "text_based_featur": 64, "textblob": [24, 39, 51, 52, 64], "textblob_sentiment_analysi": 11, "than": [0, 1, 2, 11, 13, 31, 34, 35, 36, 37, 40, 41, 45, 46, 54, 60, 62, 63], "thee": 62, "thei": [0, 1, 28, 29, 31, 34, 36, 37, 39, 42, 47, 58, 59, 61, 62, 67], "them": [0, 1, 2, 19, 28, 29, 31, 36, 50, 51, 55, 59, 61, 62, 64, 65, 66, 67], "themselv": [31, 36, 60], "theoret": 35, "theori": [34, 50], "therefor": [0, 1, 11, 28, 37, 45, 59, 62, 69], "thi": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 16, 18, 20, 21, 23, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 71, 72, 73], "thing": [48, 61], "think": [1, 38, 47], "thorough": [43, 62], "those": [1, 21, 31, 36, 61], "though": [34, 42], "thought": [1, 35, 45], "thread": [1, 61], "three": [0, 1, 2, 22, 34, 37, 40, 51, 61, 62, 69, 71], "threshold": [15, 47], "through": [1, 45, 46, 50, 61, 62], "throughout": [31, 35, 36, 40, 45, 46, 55, 63], "tht": 35, "thu": [1, 2, 34, 35, 36, 37, 46, 55, 71], "time": [0, 1, 4, 23, 34, 35, 39, 42, 48, 51, 55, 59, 61, 62, 63, 64, 65, 66, 71], "time_diff": 55, "timediff": 4, "timestamp": [0, 1, 2, 8, 23, 58, 61, 62, 63, 64, 71], "timestamp_col": [0, 1, 2, 8, 61, 63, 64, 65, 71], "timestamp_end": [1, 23, 61, 64], "timestamp_start": [1, 23, 61, 64], "todai": [34, 35, 41, 43, 45, 46, 47], "todo": 66, "togeth": [0, 62, 66], "token": [16, 19, 39, 49, 54, 64], "token_count": [19, 49], "too": [30, 31, 36, 62], "took": [1, 59], "tool": [1, 61, 62], "toolkit": [0, 1, 11, 42, 45, 46, 55, 62], "top": [1, 50, 59], "topic": [1, 13, 31, 34, 40, 42, 43, 65], "tormala": 5, "total": [1, 3, 12, 16, 25, 31, 34, 36, 37, 41, 44, 53, 59, 60, 61, 62, 63, 64, 66, 72], "touch": [1, 61], "toward": [31, 36, 38, 42, 45, 46], "tradit": 49, "train": [1, 2, 15, 64], "train_spacy_n": 15, "transcript": 0, "transfom": [45, 46], "transform": [31, 34, 35, 36, 51], "transform_utter": 50, "treat": [1, 59, 61], "tri": [50, 64], "trivial": [3, 44, 62], "troubl": [1, 61], "true": [0, 1, 2, 37, 61, 63, 67, 71], "truncat": 2, "truth_intensifi": 49, "ttr": 64, "tupl": [0, 1, 2, 15, 19, 64], "turn": [0, 2, 25, 28, 31, 32, 37, 39, 61, 64, 65, 71], "turn_count": 59, "turn_df": 71, "turn_id": 71, "turn_taking_featur": 11, "twice": 63, "twitter": [1, 51, 61], "two": [0, 1, 2, 23, 31, 34, 36, 41, 45, 46, 52, 62, 63], "txt": 19, "type": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 37, 39, 52, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73], "typic": [1, 34, 40, 41, 42, 52, 60], "u": [1, 22, 31, 36, 48, 49, 58], "uci": 16, "uh": [31, 36], "ulrich": 55, "um": [31, 36, 60], "umbrella": [8, 29, 34], "uncertain": [5, 30], "uncertainti": 30, "under": [0, 1, 10, 11, 12, 28, 40], "underli": [1, 61], "underscor": [1, 61], "understand": [0, 33, 39, 43, 48, 58, 61, 62], "understood": 33, "uninterrupt": 59, "uniqu": [0, 1, 2, 6, 9, 13, 16, 23, 25, 41, 47, 52, 60, 61, 63, 71], "univers": 62, "unix": 58, "unless": [31, 36], "unpack": 62, "unpreprocess": [0, 2], "until": [31, 36, 45, 46], "unzip": [1, 61], "up": [1, 17, 21, 28, 31, 35, 36, 37, 45, 46, 51, 59, 61], "updat": [1, 9, 40, 54, 61], "upenn": 1, "upload": 13, "upon": 33, "upper": 42, "us": [0, 1, 2, 3, 5, 11, 12, 13, 17, 19, 24, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 60, 62, 64, 65, 66, 67, 71], "usag": [21, 24], "use_time_if_poss": 63, "user": [0, 1, 2, 9, 15, 22, 37, 47, 48, 51, 61, 62, 63, 64, 65, 66, 69, 72], "user_data": [2, 65, 66], "user_df": 9, "user_level_featur": 2, "user_list": 9, "userlevelfeaturescalcul": [2, 66, 69], "usernam": [22, 48], "utf": 1, "util": [1, 12, 21, 61, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73], "utilti": 62, "utter": [0, 1, 2, 3, 4, 5, 13, 14, 15, 16, 17, 20, 21, 23, 24, 30, 31, 32, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 50, 51, 52, 54, 58, 60, 61, 67], "utteranc": 42, "v": [0, 1, 2, 13, 42, 61], "v0": 0, "valenc": 51, "valid": [23, 55], "valu": [1, 2, 5, 6, 10, 12, 13, 18, 19, 23, 28, 30, 31, 34, 36, 37, 40, 41, 42, 45, 46, 47, 55, 59, 61, 64, 68, 71, 72, 73], "vari": [13, 31, 34, 35], "variabl": [1, 56, 57, 64, 65, 66], "varianc": [8, 34], "variance_in_dd": 11, "variat": [4, 32], "varieti": [42, 62], "variou": [19, 42, 64, 65, 66], "vast": 62, "ve": [0, 31, 36, 50, 61], "vec": 6, "vect_data": [1, 7, 8, 28, 61, 64, 65, 66], "vect_path": 67, "vector": [0, 2, 6, 7, 8, 13, 28, 34, 35, 40, 55, 61, 64, 65, 67], "vector_data": [0, 1, 2, 61], "vector_directori": [0, 1, 2, 61, 65], "vein": 45, "verb": [19, 31, 36], "verbal": 32, "veri": [5, 28, 30, 31, 34, 35, 36, 42, 49, 54], "verifi": 2, "verit": 62, "version": [1, 12, 14, 21, 28, 31, 40, 51, 61], "versu": [4, 29, 47, 55, 59], "via": [3, 44], "view": 50, "visit": 41, "voila": 62, "w": 31, "wa": [0, 1, 2, 5, 12, 31, 32, 35, 36, 47, 51, 56, 59, 62, 71], "wai": [1, 2, 29, 30, 31, 32, 34, 49, 50, 54, 56, 57, 61, 62, 66], "waiai": 62, "wait": [4, 55], "walk": 1, "walkthrough": [0, 61, 62], "want": [1, 28, 34, 59, 61, 62, 67], "warn": 50, "watt": [1, 2, 62, 71], "we": [0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 15, 16, 18, 23, 24, 28, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 56, 57, 58, 59, 61, 62, 66, 67, 71], "web": 70, "websit": [1, 61], "week": 47, "weight": 66, "weigt": 31, "welcom": 61, "well": [29, 31, 36, 55, 62], "went": 41, "were": [1, 12, 31, 36, 42], "western": 1, "wh": [19, 31, 36], "wh_question": [32, 49, 54], "wharton": 62, "what": [1, 2, 12, 16, 20, 29, 31, 32, 34, 35, 36, 39, 41, 45, 46, 47, 50, 54, 62, 63], "whatev": [1, 31, 36], "wheel": 62, "when": [1, 16, 20, 31, 33, 36, 47, 54, 55, 59, 60, 61, 62, 69, 71], "whenev": 71, "where": [0, 1, 2, 19, 20, 28, 31, 32, 36, 37, 40, 41, 42, 48, 50, 51, 54, 59, 61, 65, 68, 73], "wherea": [31, 34, 35, 36, 43], "wherev": [31, 36], "whether": [1, 2, 10, 16, 19, 32, 37, 38, 41, 43, 47, 57, 58, 62, 63, 64, 67, 71], "which": [0, 1, 2, 3, 4, 5, 7, 9, 12, 13, 15, 16, 18, 23, 25, 28, 31, 34, 35, 36, 37, 38, 40, 41, 42, 51, 53, 54, 55, 56, 57, 58, 59, 61, 62, 64, 66, 68, 69, 71, 72, 73], "while": [31, 32, 34, 36, 37, 44, 45, 46, 55, 62, 71], "whitespac": 43, "who": [20, 31, 32, 36, 47, 51, 54, 59, 60, 62], "whole": [28, 59, 62, 71], "whom": [31, 36, 54], "whose": [31, 36, 54], "why": [20, 29, 31, 36, 54], "wide": 31, "wien": 62, "wiki": [21, 29, 70], "wiki_link": [1, 61], "wikipedia": [21, 33, 37, 70], "williamson": 60, "wish": [1, 2, 18, 28], "within": [0, 1, 2, 8, 11, 16, 28, 30, 31, 34, 35, 36, 41, 45, 46, 52, 55, 59, 60, 62, 63, 64, 68, 71, 73], "within_group": 2, "within_person_discursive_rang": 11, "within_task": [0, 1, 2, 71], "without": [1, 19, 31, 36, 42, 47, 54, 62, 69], "won": [0, 31, 36, 45], "wonder": 56, "woolei": 4, "woollei": [13, 40, 55], "wooten": 55, "word": [3, 10, 11, 12, 13, 14, 16, 19, 20, 21, 22, 28, 30, 32, 33, 37, 38, 39, 40, 41, 43, 45, 46, 48, 49, 52, 53, 54, 56, 57, 62, 64, 65, 66, 69, 70], "word_mimicri": 11, "word_start": [19, 49], "wordnet": [1, 61], "words_in_lin": 19, "work": [0, 47, 50, 55, 61, 62], "world": 55, "worri": 62, "would": [1, 29, 31, 34, 35, 36, 37, 42, 50, 54, 62], "wouldn": [31, 36], "wow": 50, "wp": 13, "write": [2, 29, 60], "www": [12, 13, 18, 41, 64], "x": [0, 1, 2, 4, 46, 68], "xinlan": 62, "yashveer": 62, "ye": 19, "yeah": [31, 36], "yeoman": [18, 49], "yesno_quest": [32, 49, 54], "yet": 48, "ylatau": 12, "you": [0, 1, 2, 11, 24, 29, 31, 36, 37, 43, 47, 50, 59, 61, 62, 69], "your": [0, 29, 31, 32, 36, 37, 50, 59, 61, 62], "yourself": [31, 36, 50], "yuluan": 62, "yup": [31, 36], "yuxuan": 62, "z": [12, 39, 49, 51, 64, 73], "zero": [13, 52], "zhang": 62, "zheng": 62, "zhong": 62, "zhou": 62, "zscore": 41, "zscore_chat": 41, "zscore_chats_and_convers": 69, "zscore_convers": 41, "\u00bc": 47, "\u03c4": 55}, "titles": ["The Basics", "Worked Example", "feature_builder module", "basic_features module", "burstiness module", "certainty module", "discursive_diversity module", "fflow module", "get_all_DD_features module", "get_user_network module", "hedge module", "Features: Technical Documentation", "info_exchange_zscore module", "information_diversity module", "lexical_features_v2 module", "named_entity_recognition_features module", "other_lexical_features module", "politeness_features module", "politeness_v2 module", "politeness_v2_helper module", "question_num module", "readability module", "reddit_tags module", "temporal_features module", "textblob_sentiment_analysis module", "turn_taking_features module", "variance_in_DD module", "within_person_discursive_range module", "word_mimicry module", "FEATURE NAME", "Certainty", "Content Word Accommodation", "Conversational Repair", "Dale-Chall Score", "Discursive Diversity", "Forward Flow", "Function Word Accommodation", "Gini Coefficient", "Hedge", "Features: Conceptual Documentation", "Information Diversity", "Information Exchange", "Linguistic Inquiry and Word Count (LIWC) and Other Lexicons", "Message Length", "Message Quantity", "Mimicry (BERT)", "Moving Mimicry", "Named Entity Recognition", "Online Discussion Tags", "Politeness/Receptiveness Markers", "Politeness Strategies", "Sentiment (RoBERTa)", "Positivity Z-Score", "Proportion of First Person Pronouns", "Question (Naive)", "Team Burstiness", "Textblob Polarity", "Textblob Subjectivity", "Time Difference", "Turn Taking Index", "Word Type-Token Ratio", "The Team Communication Toolkit", "Introduction", "assign_chunk_nums module", "calculate_chat_level_features module", "calculate_conversation_level_features module", "calculate_user_level_features module", "check_embeddings module", "gini_coefficient module", "Utilities", "preload_word_lists module", "preprocess module", "summarize_features module", "zscore_chats_and_conversation module"], "titleterms": {"A": 0, "One": 0, "The": [0, 61, 62], "accommod": [31, 36], "addit": 1, "advanc": 1, "assign_chunk_num": 63, "assumpt": 0, "basic": [0, 1, 29, 30, 31, 33, 34, 35, 36, 37, 38, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 55, 56, 57, 58, 59, 60], "basic_featur": 3, "bert": 45, "bursti": [4, 55], "calculate_chat_level_featur": 64, "calculate_conversation_level_featur": 65, "calculate_user_level_featur": 66, "caveat": [29, 30, 31, 33, 34, 35, 36, 38, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 55, 56, 57, 58, 59], "certainti": [5, 30], "chall": 33, "chat": [11, 39], "check_embed": 67, "citat": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "class": 69, "code": [0, 1], "coeffici": 37, "column": [1, 61], "commun": 61, "conceptu": 39, "configur": 1, "consider": 1, "content": [31, 61], "convers": [1, 11, 32, 39, 62, 69], "count": [42, 59], "customiz": 0, "dale": 33, "data": 1, "declar": 61, "demo": [0, 1], "detail": 1, "differ": 58, "directori": 1, "discurs": 34, "discursive_divers": 6, "discuss": 48, "divers": [34, 40], "document": [11, 39, 62], "driver": 69, "entiti": 47, "environ": [1, 61], "exampl": [1, 41, 47], "exchang": 41, "featur": [1, 11, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 69], "feature_build": 2, "featurebuild": [1, 61, 62], "fflow": 7, "file": [1, 30, 34, 35, 45, 46, 47, 51], "first": 53, "flow": 35, "forward": 35, "function": [0, 36], "gener": [1, 61, 62], "get": [1, 61, 62], "get_all_dd_featur": 8, "get_user_network": 9, "gini": 37, "gini_coeffici": 68, "hedg": [10, 38], "high": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "implement": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "import": [1, 61], "index": 59, "indic": 61, "info_exchange_zscor": 12, "inform": [1, 40, 41, 61], "information_divers": 13, "input": [1, 34], "inquiri": 42, "inspect": [1, 61], "interpret": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "introduct": 62, "intuit": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "kei": 0, "length": 43, "level": [11, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 69], "lexical_features_v2": 14, "lexicon": 42, "light": 0, "linguist": 42, "liwc": 42, "marker": 49, "messag": [43, 44], "mimicri": [45, 46], "modul": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73], "motiv": 62, "move": 46, "naiv": 54, "name": [1, 29, 47, 61], "named_entity_recognition_featur": 15, "note": [29, 30, 31, 33, 34, 35, 36, 38, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 55, 56, 57, 58, 59], "onlin": 48, "other": [42, 69], "other_lexical_featur": 16, "ouput": 34, "our": 62, "output": [1, 30, 35, 45, 46, 47, 51], "packag": [0, 1, 61], "paramet": [0, 1], "person": 53, "pip": [1, 61], "polar": 56, "polit": [49, 50], "politeness_featur": 17, "politeness_v2": 18, "politeness_v2_help": 19, "posit": 52, "preload_word_list": 70, "preprocess": 71, "pronoun": 53, "proport": 53, "quantiti": 44, "question": 54, "question_num": 20, "ratio": 60, "readabl": 21, "recept": 49, "recognit": 47, "recommend": [1, 61], "reddit_tag": 22, "relat": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "repair": 32, "roberta": 51, "run": 1, "sampl": [0, 1], "score": [33, 41, 52], "sentiment": 51, "speaker": [11, 59, 62, 69], "start": [1, 61, 62], "strategi": 50, "subject": 57, "summarize_featur": 72, "tabl": 61, "tag": 48, "take": 59, "team": [55, 61, 62], "technic": 11, "temporal_featur": 23, "textblob": [56, 57], "textblob_sentiment_analysi": 24, "time": 58, "token": 60, "toolkit": 61, "touch": 0, "train": 47, "troubleshoot": [1, 61], "turn": [1, 59], "turn_taking_featur": 25, "type": 60, "us": 61, "user": 11, "util": 69, "utter": [11, 39, 62, 69], "variance_in_dd": 26, "vector": 1, "virtual": [1, 61], "walkthrough": 1, "within_person_discursive_rang": 27, "word": [31, 36, 42, 60], "word_mimicri": 28, "work": 1, "your": 1, "z": [41, 52], "zscore_chats_and_convers": 73}}) \ No newline at end of file +Search.setIndex({"alltitles": {"A Light-Touch, One-Function Package": [[0, "a-light-touch-one-function-package"]], "Additional FeatureBuilder Considerations": [[1, "additional-featurebuilder-considerations"]], "Advanced Configuration Columns": [[1, "advanced-configuration-columns"]], "Basic Input Columns": [[1, "basic-input-columns"]], "Certainty": [[30, null]], "Citation": [[29, "citation"], [30, "citation"], [31, "citation"], [32, "citation"], [33, "citation"], [34, "citation"], [35, "citation"], [36, "citation"], [37, "citation"], [38, "citation"], [40, "citation"], [41, "citation"], [42, "citation"], [43, "citation"], [44, "citation"], [45, "citation"], [46, "citation"], [47, "citation"], [48, "citation"], [49, "citation"], [50, "citation"], [51, "citation"], [52, "citation"], [53, "citation"], [54, "citation"], [55, "citation"], [56, "citation"], [57, "citation"], [58, "citation"], [59, "citation"], [60, "citation"]], "Configuring the FeatureBuilder": [[1, "configuring-the-featurebuilder"]], "Content Word Accommodation": [[31, null]], "Contents:": [[61, null]], "Conversation Parameters": [[1, "conversation-parameters"]], "Conversation-Level Features": [[11, "conversation-level-features"], [39, "conversation-level-features"]], "Conversational Repair": [[32, null]], "Customizable Parameters": [[0, "customizable-parameters"]], "Dale-Chall Score": [[33, null]], "Declaring a FeatureBuilder": [[61, "declaring-a-featurebuilder"]], "Demo / Sample Code": [[0, "demo-sample-code"], [1, "demo-sample-code"]], "Discursive Diversity": [[34, null]], "Example:": [[41, "example"]], "FEATURE NAME": [[29, null]], "Feature Column Names": [[1, "feature-column-names"], [61, "feature-column-names"]], "Feature Documentation": [[62, "feature-documentation"]], "Feature Information": [[1, "feature-information"], [61, "feature-information"]], "Features: Conceptual Documentation": [[39, null]], "Features: Technical Documentation": [[11, null]], "Forward Flow": [[35, null]], "Function Word Accommodation": [[36, null]], "Generating Features: Utterance-, Speaker-, and Conversation-Level": [[62, "generating-features-utterance-speaker-and-conversation-level"]], "Getting Started": [[1, "getting-started"], [61, "getting-started"], [62, "getting-started"]], "Gini Coefficient": [[37, null]], "Hedge": [[38, null]], "High*Level Intuition": [[54, "high-level-intuition"]], "High-Level Intuition": [[29, "high-level-intuition"], [30, "high-level-intuition"], [31, "high-level-intuition"], [32, "high-level-intuition"], [33, "high-level-intuition"], [34, "high-level-intuition"], [35, "high-level-intuition"], [36, "high-level-intuition"], [37, "high-level-intuition"], [38, "high-level-intuition"], [40, "high-level-intuition"], [41, "high-level-intuition"], [42, "high-level-intuition"], [43, "high-level-intuition"], [44, "high-level-intuition"], [45, "high-level-intuition"], [46, "high-level-intuition"], [47, "high-level-intuition"], [48, "high-level-intuition"], [49, "high-level-intuition"], [50, "high-level-intuition"], [51, "high-level-intuition"], [52, "high-level-intuition"], [53, "high-level-intuition"], [55, "high-level-intuition"], [56, "high-level-intuition"], [57, "high-level-intuition"], [58, "high-level-intuition"], [59, "high-level-intuition"], [60, "high-level-intuition"]], "Implementation": [[32, "implementation"], [42, "implementation"], [52, "implementation"], [54, "implementation"]], "Implementation Basics": [[29, "implementation-basics"], [30, "implementation-basics"], [31, "implementation-basics"], [33, "implementation-basics"], [34, "implementation-basics"], [35, "implementation-basics"], [36, "implementation-basics"], [37, "implementation-basics"], [38, "implementation-basics"], [40, "implementation-basics"], [41, "implementation-basics"], [43, "implementation-basics"], [44, "implementation-basics"], [45, "implementation-basics"], [46, "implementation-basics"], [47, "implementation-basics"], [48, "implementation-basics"], [49, "implementation-basics"], [50, "implementation-basics"], [51, "implementation-basics"], [53, "implementation-basics"], [55, "implementation-basics"], [56, "implementation-basics"], [57, "implementation-basics"], [58, "implementation-basics"], [59, "implementation-basics"], [60, "implementation-basics"]], "Implementation Notes/Caveats": [[29, "implementation-notes-caveats"], [30, "implementation-notes-caveats"], [31, "implementation-notes-caveats"], [33, "implementation-notes-caveats"], [34, "implementation-notes-caveats"], [35, "implementation-notes-caveats"], [36, "implementation-notes-caveats"], [38, "implementation-notes-caveats"], [40, "implementation-notes-caveats"], [41, "implementation-notes-caveats"], [43, "implementation-notes-caveats"], [44, "implementation-notes-caveats"], [45, "implementation-notes-caveats"], [46, "implementation-notes-caveats"], [47, "implementation-notes-caveats"], [48, "implementation-notes-caveats"], [49, "implementation-notes-caveats"], [50, "implementation-notes-caveats"], [51, "implementation-notes-caveats"], [53, "implementation-notes-caveats"], [55, "implementation-notes-caveats"], [56, "implementation-notes-caveats"], [57, "implementation-notes-caveats"], [58, "implementation-notes-caveats"], [59, "implementation-notes-caveats"]], "Import Recommendations: Virtual Environment and Pip": [[1, "import-recommendations-virtual-environment-and-pip"], [61, "import-recommendations-virtual-environment-and-pip"]], "Importing the Package": [[1, "importing-the-package"]], "Indices and Tables": [[61, "indices-and-tables"]], "Information Diversity": [[40, null]], "Information Exchange": [[41, null]], "Input File": [[34, "id2"]], "Inspecting Generated Features": [[1, "inspecting-generated-features"], [61, "inspecting-generated-features"]], "Interpretation:": [[41, "interpretation"]], "Interpreting the Feature": [[29, "interpreting-the-feature"], [30, "interpreting-the-feature"], [31, "interpreting-the-feature"], [32, "interpreting-the-feature"], [33, "interpreting-the-feature"], [34, "interpreting-the-feature"], [35, "interpreting-the-feature"], [36, "interpreting-the-feature"], [37, "interpreting-the-feature"], [38, "interpreting-the-feature"], [40, "interpreting-the-feature"], [41, "interpreting-the-feature"], [42, "interpreting-the-feature"], [43, "interpreting-the-feature"], [44, "interpreting-the-feature"], [45, "interpreting-the-feature"], [46, "interpreting-the-feature"], [47, "interpreting-the-feature"], [48, "interpreting-the-feature"], [49, "interpreting-the-feature"], [50, "interpreting-the-feature"], [51, "interpreting-the-feature"], [52, "interpreting-the-feature"], [53, "interpreting-the-feature"], [54, "interpreting-the-feature"], [55, "interpreting-the-feature"], [56, "interpreting-the-feature"], [57, "interpreting-the-feature"], [58, "interpreting-the-feature"], [59, "interpreting-the-feature"], [60, "interpreting-the-feature"]], "Introduction": [[62, null]], "Key Assumptions and Parameters": [[0, "key-assumptions-and-parameters"]], "Linguistic Inquiry and Word Count (LIWC) and Other Lexicons": [[42, null]], "Message Length": [[43, null]], "Message Quantity": [[44, null]], "Mimicry (BERT)": [[45, null]], "Motivation": [[62, "motivation"]], "Moving Mimicry": [[46, null]], "Named Entity Recognition": [[47, null]], "Named Entity Training Examples": [[47, "id2"]], "New in v.1.0.5: \u201cBring Your Own LIWC\u201d Custom Lexicon": [[42, "new-in-v-1-0-5-bring-your-own-liwc-custom-lexicon"]], "Online Discussion Tags": [[48, null]], "Other Utilities": [[69, "other-utilities"]], "Ouput File": [[34, "id3"]], "Our Team": [[62, "our-team"]], "Output File": [[30, "id2"], [35, "id2"], [45, "id2"], [46, "id2"], [47, "id3"], [51, "id1"]], "Output File Naming Details": [[1, "output-file-naming-details"]], "Package Assumptions": [[0, "package-assumptions"]], "Politeness Strategies": [[50, null]], "Politeness/Receptiveness Markers": [[49, null]], "Positivity Z-Score": [[52, null]], "Proportion of First Person Pronouns": [[53, null]], "Question (Naive)": [[54, null]], "Related Features": [[29, "related-features"], [30, "related-features"], [31, "related-features"], [32, "related-features"], [33, "related-features"], [34, "related-features"], [35, "related-features"], [36, "related-features"], [37, "related-features"], [38, "related-features"], [40, "related-features"], [41, "related-features"], [42, "related-features"], [43, "related-features"], [44, "related-features"], [45, "related-features"], [46, "related-features"], [47, "related-features"], [48, "related-features"], [49, "related-features"], [50, "related-features"], [51, "related-features"], [52, "related-features"], [53, "related-features"], [54, "related-features"], [55, "related-features"], [56, "related-features"], [57, "related-features"], [58, "related-features"], [59, "related-features"], [60, "related-features"]], "Sentiment (RoBERTa)": [[51, null]], "Speaker Turn Counts": [[59, "id2"]], "Speaker- (User) Level Features": [[11, "speaker-user-level-features"]], "Table of Contents": [[61, "table-of-contents"]], "Team Burstiness": [[55, null]], "Textblob Polarity": [[56, null]], "Textblob Subjectivity": [[57, null]], "The Basics": [[0, null]], "The FeatureBuilder": [[62, "the-featurebuilder"]], "The Team Communication Toolkit": [[61, null]], "Time Difference": [[58, null]], "Troubleshooting": [[1, "troubleshooting"], [61, "troubleshooting"]], "Turn Taking Index": [[59, null]], "Turns": [[1, "turns"]], "Using the Package": [[61, "using-the-package"]], "Utilities": [[69, null]], "Utterance- (Chat) Level Features": [[11, "utterance-chat-level-features"], [39, "utterance-chat-level-features"]], "Vector Directory": [[1, "vector-directory"]], "Walkthrough: Running the FeatureBuilder on Your Data": [[1, "walkthrough-running-the-featurebuilder-on-your-data"]], "Word Type-Token Ratio": [[60, null]], "Worked Example": [[1, null]], "assign_chunk_nums module": [[63, null]], "basic_features module": [[3, null]], "burstiness module": [[4, null]], "calculate_chat_level_features module": [[64, null]], "calculate_conversation_level_features module": [[65, null]], "calculate_user_level_features module": [[66, null]], "certainty module": [[5, null]], "check_embeddings module": [[67, null]], "discursive_diversity module": [[6, null]], "feature_builder module": [[2, null]], "fflow module": [[7, null]], "get_all_DD_features module": [[8, null]], "get_user_network module": [[9, null]], "gini_coefficient module": [[68, null]], "hedge module": [[10, null]], "info_exchange_zscore module": [[12, null]], "information_diversity module": [[13, null]], "lexical_features_v2 module": [[14, null]], "named_entity_recognition_features module": [[15, null]], "other_lexical_features module": [[16, null]], "politeness_features module": [[17, null]], "politeness_v2 module": [[18, null]], "politeness_v2_helper module": [[19, null]], "preload_word_lists module": [[70, null]], "preprocess module": [[71, null]], "question_num module": [[20, null]], "readability module": [[21, null]], "reddit_tags module": [[22, null]], "summarize_features module": [[72, null]], "temporal_features module": [[23, null]], "textblob_sentiment_analysis module": [[24, null]], "turn_taking_features module": [[25, null]], "variance_in_DD module": [[26, null]], "within_person_discursive_range module": [[27, null]], "word_mimicry module": [[28, null]], "z-scores:": [[41, "z-scores"]], "zscore_chats_and_conversation module": [[73, null]], "\u201cDriver\u201d Classes: Utterance-, Conversation-, and Speaker-Level Features": [[69, "driver-classes-utterance-conversation-and-speaker-level-features"]]}, "docnames": ["basics", "examples", "feature_builder", "features/basic_features", "features/burstiness", "features/certainty", "features/discursive_diversity", "features/fflow", "features/get_all_DD_features", "features/get_user_network", "features/hedge", "features/index", "features/info_exchange_zscore", "features/information_diversity", "features/lexical_features_v2", "features/named_entity_recognition_features", "features/other_lexical_features", "features/politeness_features", "features/politeness_v2", "features/politeness_v2_helper", "features/question_num", "features/readability", "features/reddit_tags", "features/temporal_features", "features/textblob_sentiment_analysis", "features/turn_taking_features", "features/variance_in_DD", "features/within_person_discursive_range", "features/word_mimicry", "features_conceptual/TEMPLATE", "features_conceptual/certainty", "features_conceptual/content_word_accommodation", "features_conceptual/conversational_repair", "features_conceptual/dale_chall_score", "features_conceptual/discursive_diversity", "features_conceptual/forward_flow", "features_conceptual/function_word_accommodation", "features_conceptual/gini_coefficient", "features_conceptual/hedge", "features_conceptual/index", "features_conceptual/information_diversity", "features_conceptual/information_exchange", "features_conceptual/liwc", "features_conceptual/message_length", "features_conceptual/message_quantity", "features_conceptual/mimicry_bert", "features_conceptual/moving_mimicry", "features_conceptual/named_entity_recognition", "features_conceptual/online_discussions_tags", "features_conceptual/politeness_receptiveness_markers", "features_conceptual/politeness_strategies", "features_conceptual/positivity_bert", "features_conceptual/positivity_z_score", "features_conceptual/proportion_of_first_person_pronouns", "features_conceptual/questions", "features_conceptual/team_burstiness", "features_conceptual/textblob_polarity", "features_conceptual/textblob_subjectivity", "features_conceptual/time_difference", "features_conceptual/turn_taking_index", "features_conceptual/word_ttr", "index", "intro", "utils/assign_chunk_nums", "utils/calculate_chat_level_features", "utils/calculate_conversation_level_features", "utils/calculate_user_level_features", "utils/check_embeddings", "utils/gini_coefficient", "utils/index", "utils/preload_word_lists", "utils/preprocess", "utils/summarize_features", "utils/zscore_chats_and_conversation"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["basics.rst", "examples.rst", "feature_builder.rst", "features/basic_features.rst", "features/burstiness.rst", "features/certainty.rst", "features/discursive_diversity.rst", "features/fflow.rst", "features/get_all_DD_features.rst", "features/get_user_network.rst", "features/hedge.rst", "features/index.rst", "features/info_exchange_zscore.rst", "features/information_diversity.rst", "features/lexical_features_v2.rst", "features/named_entity_recognition_features.rst", "features/other_lexical_features.rst", "features/politeness_features.rst", "features/politeness_v2.rst", "features/politeness_v2_helper.rst", "features/question_num.rst", "features/readability.rst", "features/reddit_tags.rst", "features/temporal_features.rst", "features/textblob_sentiment_analysis.rst", "features/turn_taking_features.rst", "features/variance_in_DD.rst", "features/within_person_discursive_range.rst", "features/word_mimicry.rst", "features_conceptual/TEMPLATE.rst", "features_conceptual/certainty.rst", "features_conceptual/content_word_accommodation.rst", "features_conceptual/conversational_repair.rst", "features_conceptual/dale_chall_score.rst", "features_conceptual/discursive_diversity.rst", "features_conceptual/forward_flow.rst", "features_conceptual/function_word_accommodation.rst", "features_conceptual/gini_coefficient.rst", "features_conceptual/hedge.rst", "features_conceptual/index.rst", "features_conceptual/information_diversity.rst", "features_conceptual/information_exchange.rst", "features_conceptual/liwc.rst", "features_conceptual/message_length.rst", "features_conceptual/message_quantity.rst", "features_conceptual/mimicry_bert.rst", "features_conceptual/moving_mimicry.rst", "features_conceptual/named_entity_recognition.rst", "features_conceptual/online_discussions_tags.rst", "features_conceptual/politeness_receptiveness_markers.rst", "features_conceptual/politeness_strategies.rst", "features_conceptual/positivity_bert.rst", "features_conceptual/positivity_z_score.rst", "features_conceptual/proportion_of_first_person_pronouns.rst", "features_conceptual/questions.rst", "features_conceptual/team_burstiness.rst", "features_conceptual/textblob_polarity.rst", "features_conceptual/textblob_subjectivity.rst", "features_conceptual/time_difference.rst", "features_conceptual/turn_taking_index.rst", "features_conceptual/word_ttr.rst", "index.rst", "intro.rst", "utils/assign_chunk_nums.rst", "utils/calculate_chat_level_features.rst", "utils/calculate_conversation_level_features.rst", "utils/calculate_user_level_features.rst", "utils/check_embeddings.rst", "utils/gini_coefficient.rst", "utils/index.rst", "utils/preload_word_lists.rst", "utils/preprocess.rst", "utils/summarize_features.rst", "utils/zscore_chats_and_conversation.rst"], "indexentries": {"adverb_limiter() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.adverb_limiter", false]], "assert_key_columns_present() (in module utils.preprocess)": [[71, "utils.preprocess.assert_key_columns_present", false]], "assign_chunk_nums() (in module utils.assign_chunk_nums)": [[63, "utils.assign_chunk_nums.assign_chunk_nums", false]], "bare_command() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.bare_command", false]], "built_spacy_ner() (in module features.named_entity_recognition_features)": [[15, "features.named_entity_recognition_features.built_spacy_ner", false]], "burstiness() (in module features.burstiness)": [[4, "features.burstiness.burstiness", false]], "calculate_chat_level_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_chat_level_features", false]], "calculate_conversation_level_features() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.calculate_conversation_level_features", false]], "calculate_hedge_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_hedge_features", false]], "calculate_id_score() (in module features.information_diversity)": [[13, "features.information_diversity.calculate_ID_score", false]], "calculate_info_diversity() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.calculate_info_diversity", false]], "calculate_named_entities() (in module features.named_entity_recognition_features)": [[15, "features.named_entity_recognition_features.calculate_named_entities", false]], "calculate_num_question_naive() (in module features.question_num)": [[20, "features.question_num.calculate_num_question_naive", false]], "calculate_politeness_sentiment() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_politeness_sentiment", false]], "calculate_politeness_v2() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_politeness_v2", false]], "calculate_team_burstiness() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.calculate_team_burstiness", false]], "calculate_textblob_sentiment() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_textblob_sentiment", false]], "calculate_user_level_features() (utils.calculate_user_level_features.userlevelfeaturescalculator method)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator.calculate_user_level_features", false]], "calculate_vector_word_mimicry() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_vector_word_mimicry", false]], "calculate_word_mimicry() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.calculate_word_mimicry", false]], "chat_level_features() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.chat_level_features", false]], "chatlevelfeaturescalculator (class in utils.calculate_chat_level_features)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator", false]], "check_embeddings() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.check_embeddings", false]], "classify_ntri() (in module features.other_lexical_features)": [[16, "features.other_lexical_features.classify_NTRI", false]], "classify_text_dalechall() (in module features.readability)": [[21, "features.readability.classify_text_dalechall", false]], "clean_text() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.clean_text", false]], "coerce_to_date_or_number() (in module features.temporal_features)": [[23, "features.temporal_features.coerce_to_date_or_number", false]], "commit_data() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.commit_data", false]], "compress() (in module utils.preprocess)": [[71, "utils.preprocess.compress", false]], "compute_frequency() (in module features.word_mimicry)": [[28, "features.word_mimicry.compute_frequency", false]], "compute_frequency_per_conv() (in module features.word_mimicry)": [[28, "features.word_mimicry.compute_frequency_per_conv", false]], "computetf() (in module features.word_mimicry)": [[28, "features.word_mimicry.computeTF", false]], "concat_bert_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.concat_bert_features", false]], "conjection_seperator() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.conjection_seperator", false]], "content_mimicry_score() (in module features.word_mimicry)": [[28, "features.word_mimicry.Content_mimicry_score", false]], "content_mimicry_score_per_conv() (in module features.word_mimicry)": [[28, "features.word_mimicry.Content_mimicry_score_per_conv", false]], "conv_level_features() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.conv_level_features", false]], "conv_to_float_arr() (in module features.get_all_dd_features)": [[8, "features.get_all_DD_features.conv_to_float_arr", false]], "conversationlevelfeaturescalculator (class in utils.calculate_conversation_level_features)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator", false]], "count_all_caps() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_all_caps", false]], "count_bullet_points() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_bullet_points", false]], "count_characters() (in module features.basic_features)": [[3, "features.basic_features.count_characters", false]], "count_difficult_words() (in module features.readability)": [[21, "features.readability.count_difficult_words", false]], "count_ellipses() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_ellipses", false]], "count_emojis() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_emojis", false]], "count_emphasis() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_emphasis", false]], "count_line_breaks() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_line_breaks", false]], "count_links() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_links", false]], "count_matches() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.count_matches", false]], "count_messages() (in module features.basic_features)": [[3, "features.basic_features.count_messages", false]], "count_numbering() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_numbering", false]], "count_parentheses() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_parentheses", false]], "count_quotes() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_quotes", false]], "count_responding_to_someone() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_responding_to_someone", false]], "count_spacy_matches() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.count_spacy_matches", false]], "count_syllables() (in module features.readability)": [[21, "features.readability.count_syllables", false]], "count_turn_taking_index() (in module features.turn_taking_features)": [[25, "features.turn_taking_features.count_turn_taking_index", false]], "count_turns() (in module features.turn_taking_features)": [[25, "features.turn_taking_features.count_turns", false]], "count_user_references() (in module features.reddit_tags)": [[22, "features.reddit_tags.count_user_references", false]], "count_words() (in module features.basic_features)": [[3, "features.basic_features.count_words", false]], "create_chunks() (in module utils.assign_chunk_nums)": [[63, "utils.assign_chunk_nums.create_chunks", false]], "create_chunks_messages() (in module utils.assign_chunk_nums)": [[63, "utils.assign_chunk_nums.create_chunks_messages", false]], "create_cumulative_rows() (in module utils.preprocess)": [[71, "utils.preprocess.create_cumulative_rows", false]], "dale_chall_helper() (in module features.readability)": [[21, "features.readability.dale_chall_helper", false]], "feat_counts() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.feat_counts", false]], "feature_builder": [[2, "module-feature_builder", false]], "featurebuilder (class in feature_builder)": [[2, "feature_builder.FeatureBuilder", false]], "features.basic_features": [[3, "module-features.basic_features", false]], "features.burstiness": [[4, "module-features.burstiness", false]], "features.certainty": [[5, "module-features.certainty", false]], "features.discursive_diversity": [[6, "module-features.discursive_diversity", false]], "features.fflow": [[7, "module-features.fflow", false]], "features.get_all_dd_features": [[8, "module-features.get_all_DD_features", false]], "features.get_user_network": [[9, "module-features.get_user_network", false]], "features.hedge": [[10, "module-features.hedge", false]], "features.info_exchange_zscore": [[12, "module-features.info_exchange_zscore", false]], "features.information_diversity": [[13, "module-features.information_diversity", false]], "features.lexical_features_v2": [[14, "module-features.lexical_features_v2", false]], "features.named_entity_recognition_features": [[15, "module-features.named_entity_recognition_features", false]], "features.other_lexical_features": [[16, "module-features.other_lexical_features", false]], "features.politeness_features": [[17, "module-features.politeness_features", false]], "features.politeness_v2": [[18, "module-features.politeness_v2", false]], "features.politeness_v2_helper": [[19, "module-features.politeness_v2_helper", false]], "features.question_num": [[20, "module-features.question_num", false]], "features.readability": [[21, "module-features.readability", false]], "features.reddit_tags": [[22, "module-features.reddit_tags", false]], "features.temporal_features": [[23, "module-features.temporal_features", false]], "features.textblob_sentiment_analysis": [[24, "module-features.textblob_sentiment_analysis", false]], "features.turn_taking_features": [[25, "module-features.turn_taking_features", false]], "features.variance_in_dd": [[26, "module-features.variance_in_DD", false]], "features.within_person_discursive_range": [[27, "module-features.within_person_discursive_range", false]], "features.word_mimicry": [[28, "module-features.word_mimicry", false]], "featurize() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.featurize", false]], "fix_abbreviations() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.fix_abbreviations", false]], "function_mimicry_score() (in module features.word_mimicry)": [[28, "features.word_mimicry.function_mimicry_score", false]], "generate_bert() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.generate_bert", false]], "generate_certainty_pkl() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.generate_certainty_pkl", false]], "generate_lexicon_pkl() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.generate_lexicon_pkl", false]], "generate_vect() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.generate_vect", false]], "get_average() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_average", false]], "get_centroids() (utils.calculate_user_level_features.userlevelfeaturescalculator method)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator.get_centroids", false]], "get_certainty() (in module features.certainty)": [[5, "features.certainty.get_certainty", false]], "get_certainty_score() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.get_certainty_score", false]], "get_content_words_in_message() (in module features.word_mimicry)": [[28, "features.word_mimicry.get_content_words_in_message", false]], "get_conversation_level_aggregates() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.get_conversation_level_aggregates", false]], "get_cosine_similarity() (in module features.discursive_diversity)": [[6, "features.discursive_diversity.get_cosine_similarity", false]], "get_dale_chall_easy_words() (in module utils.preload_word_lists)": [[70, "utils.preload_word_lists.get_dale_chall_easy_words", false]], "get_dale_chall_score_and_classfication() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.get_dale_chall_score_and_classfication", false]], "get_dd() (in module features.discursive_diversity)": [[6, "features.discursive_diversity.get_DD", false]], "get_dd_features() (in module features.get_all_dd_features)": [[8, "features.get_all_DD_features.get_DD_features", false]], "get_dep_pairs() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.get_dep_pairs", false]], "get_dep_pairs_noneg() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.get_dep_pairs_noneg", false]], "get_discursive_diversity_features() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.get_discursive_diversity_features", false]], "get_first_pct_of_chat() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.get_first_pct_of_chat", false]], "get_first_person_words() (in module utils.preload_word_lists)": [[70, "utils.preload_word_lists.get_first_person_words", false]], "get_forward_flow() (in module features.fflow)": [[7, "features.fflow.get_forward_flow", false]], "get_forward_flow() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.get_forward_flow", false]], "get_function_words() (in module utils.preload_word_lists)": [[70, "utils.preload_word_lists.get_function_words", false]], "get_function_words_in_message() (in module features.word_mimicry)": [[28, "features.word_mimicry.get_function_words_in_message", false]], "get_gini() (in module utils.gini_coefficient)": [[68, "utils.gini_coefficient.get_gini", false]], "get_gini_features() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.get_gini_features", false]], "get_info_diversity() (in module features.information_diversity)": [[13, "features.information_diversity.get_info_diversity", false]], "get_info_exchange_wordcount() (in module features.info_exchange_zscore)": [[12, "features.info_exchange_zscore.get_info_exchange_wordcount", false]], "get_liwc_count() (in module features.lexical_features_v2)": [[14, "features.lexical_features_v2.get_liwc_count", false]], "get_max() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_max", false]], "get_mimicry_bert() (in module features.word_mimicry)": [[28, "features.word_mimicry.get_mimicry_bert", false]], "get_min() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_min", false]], "get_moving_mimicry() (in module features.word_mimicry)": [[28, "features.word_mimicry.get_moving_mimicry", false]], "get_named_entity() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.get_named_entity", false]], "get_nan_vector() (in module features.within_person_discursive_range)": [[27, "features.within_person_discursive_range.get_nan_vector", false]], "get_polarity_score() (in module features.textblob_sentiment_analysis)": [[24, "features.textblob_sentiment_analysis.get_polarity_score", false]], "get_politeness_strategies() (in module features.politeness_features)": [[17, "features.politeness_features.get_politeness_strategies", false]], "get_politeness_v2() (in module features.politeness_v2)": [[18, "features.politeness_v2.get_politeness_v2", false]], "get_proportion_first_pronouns() (in module features.other_lexical_features)": [[16, "features.other_lexical_features.get_proportion_first_pronouns", false]], "get_question_words() (in module utils.preload_word_lists)": [[70, "utils.preload_word_lists.get_question_words", false]], "get_reddit_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.get_reddit_features", false]], "get_sentiment() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.get_sentiment", false]], "get_stdev() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_stdev", false]], "get_subjectivity_score() (in module features.textblob_sentiment_analysis)": [[24, "features.textblob_sentiment_analysis.get_subjectivity_score", false]], "get_sum() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_sum", false]], "get_team_burstiness() (in module features.burstiness)": [[4, "features.burstiness.get_team_burstiness", false]], "get_temporal_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.get_temporal_features", false]], "get_time_diff() (in module features.temporal_features)": [[23, "features.temporal_features.get_time_diff", false]], "get_time_diff_startend() (in module features.temporal_features)": [[23, "features.temporal_features.get_time_diff_startend", false]], "get_turn() (in module features.turn_taking_features)": [[25, "features.turn_taking_features.get_turn", false]], "get_turn_id() (in module utils.preprocess)": [[71, "utils.preprocess.get_turn_id", false]], "get_turn_taking_features() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.get_turn_taking_features", false]], "get_unique_pairwise_combos() (in module features.discursive_diversity)": [[6, "features.discursive_diversity.get_unique_pairwise_combos", false]], "get_user_average_dataframe() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_user_average_dataframe", false]], "get_user_level_aggregates() (utils.calculate_conversation_level_features.conversationlevelfeaturescalculator method)": [[65, "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator.get_user_level_aggregates", false]], "get_user_level_averaged_features() (utils.calculate_user_level_features.userlevelfeaturescalculator method)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator.get_user_level_averaged_features", false]], "get_user_level_summary_statistics_features() (utils.calculate_user_level_features.userlevelfeaturescalculator method)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator.get_user_level_summary_statistics_features", false]], "get_user_level_summed_features() (utils.calculate_user_level_features.userlevelfeaturescalculator method)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator.get_user_level_summed_features", false]], "get_user_network() (in module features.get_user_network)": [[9, "features.get_user_network.get_user_network", false]], "get_user_network() (utils.calculate_user_level_features.userlevelfeaturescalculator method)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator.get_user_network", false]], "get_user_sum_dataframe() (in module utils.summarize_features)": [[72, "utils.summarize_features.get_user_sum_dataframe", false]], "get_variance_in_dd() (in module features.variance_in_dd)": [[26, "features.variance_in_DD.get_variance_in_DD", false]], "get_within_person_disc_range() (in module features.within_person_discursive_range)": [[27, "features.within_person_discursive_range.get_within_person_disc_range", false]], "get_word_ttr() (in module features.other_lexical_features)": [[16, "features.other_lexical_features.get_word_TTR", false]], "get_zscore_across_all_chats() (in module utils.zscore_chats_and_conversation)": [[73, "utils.zscore_chats_and_conversation.get_zscore_across_all_chats", false]], "get_zscore_across_all_conversations() (in module utils.zscore_chats_and_conversation)": [[73, "utils.zscore_chats_and_conversation.get_zscore_across_all_conversations", false]], "gini_coefficient() (in module utils.gini_coefficient)": [[68, "utils.gini_coefficient.gini_coefficient", false]], "info_diversity() (in module features.information_diversity)": [[13, "features.information_diversity.info_diversity", false]], "info_exchange() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.info_exchange", false]], "is_hedged_sentence_1() (in module features.hedge)": [[10, "features.hedge.is_hedged_sentence_1", false]], "lexical_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.lexical_features", false]], "liwc_features() (in module features.lexical_features_v2)": [[14, "features.lexical_features_v2.liwc_features", false]], "load_liwc_dict() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.load_liwc_dict", false]], "load_saved_data() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.load_saved_data", false]], "load_to_dict() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.load_to_dict", false]], "load_to_lists() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.load_to_lists", false]], "merge_conv_data_with_original() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.merge_conv_data_with_original", false]], "mimic_words() (in module features.word_mimicry)": [[28, "features.word_mimicry.mimic_words", false]], "module": [[2, "module-feature_builder", false], [3, "module-features.basic_features", false], [4, "module-features.burstiness", false], [5, "module-features.certainty", false], [6, "module-features.discursive_diversity", false], [7, "module-features.fflow", false], [8, "module-features.get_all_DD_features", false], [9, "module-features.get_user_network", false], [10, "module-features.hedge", false], [12, "module-features.info_exchange_zscore", false], [13, "module-features.information_diversity", false], [14, "module-features.lexical_features_v2", false], [15, "module-features.named_entity_recognition_features", false], [16, "module-features.other_lexical_features", false], [17, "module-features.politeness_features", false], [18, "module-features.politeness_v2", false], [19, "module-features.politeness_v2_helper", false], [20, "module-features.question_num", false], [21, "module-features.readability", false], [22, "module-features.reddit_tags", false], [23, "module-features.temporal_features", false], [24, "module-features.textblob_sentiment_analysis", false], [25, "module-features.turn_taking_features", false], [26, "module-features.variance_in_DD", false], [27, "module-features.within_person_discursive_range", false], [28, "module-features.word_mimicry", false], [63, "module-utils.assign_chunk_nums", false], [64, "module-utils.calculate_chat_level_features", false], [65, "module-utils.calculate_conversation_level_features", false], [66, "module-utils.calculate_user_level_features", false], [67, "module-utils.check_embeddings", false], [68, "module-utils.gini_coefficient", false], [70, "module-utils.preload_word_lists", false], [71, "module-utils.preprocess", false], [72, "module-utils.summarize_features", false], [73, "module-utils.zscore_chats_and_conversation", false]], "named_entities() (in module features.named_entity_recognition_features)": [[15, "features.named_entity_recognition_features.named_entities", false]], "num_named_entity() (in module features.named_entity_recognition_features)": [[15, "features.named_entity_recognition_features.num_named_entity", false]], "other_lexical_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.other_lexical_features", false]], "phrase_split() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.phrase_split", false]], "positivity_zscore() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.positivity_zscore", false]], "prep_simple() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.prep_simple", false]], "prep_whole() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.prep_whole", false]], "preprocess_chat_data() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.preprocess_chat_data", false]], "preprocess_conversation_columns() (in module utils.preprocess)": [[71, "utils.preprocess.preprocess_conversation_columns", false]], "preprocess_naive_turns() (in module utils.preprocess)": [[71, "utils.preprocess.preprocess_naive_turns", false]], "preprocess_text() (in module utils.preprocess)": [[71, "utils.preprocess.preprocess_text", false]], "preprocess_text_lowercase_but_retain_punctuation() (in module utils.preprocess)": [[71, "utils.preprocess.preprocess_text_lowercase_but_retain_punctuation", false]], "preprocessing() (in module features.information_diversity)": [[13, "features.information_diversity.preprocessing", false]], "punctuation_seperator() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.punctuation_seperator", false]], "question() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.Question", false]], "read_in_lexicons() (in module utils.check_embeddings)": [[67, "utils.check_embeddings.read_in_lexicons", false]], "reduce_chunks() (in module utils.assign_chunk_nums)": [[63, "utils.assign_chunk_nums.reduce_chunks", false]], "remove_active_user() (in module features.get_user_network)": [[9, "features.get_user_network.remove_active_user", false]], "save_features() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.save_features", false]], "sentence_pad() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.sentence_pad", false]], "sentence_split() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.sentence_split", false]], "sentenciser() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.sentenciser", false]], "set_self_conv_data() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.set_self_conv_data", false]], "text_based_features() (utils.calculate_chat_level_features.chatlevelfeaturescalculator method)": [[64, "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator.text_based_features", false]], "token_count() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.token_count", false]], "train_spacy_ner() (in module features.named_entity_recognition_features)": [[15, "features.named_entity_recognition_features.train_spacy_ner", false]], "user_level_features() (feature_builder.featurebuilder method)": [[2, "feature_builder.FeatureBuilder.user_level_features", false]], "userlevelfeaturescalculator (class in utils.calculate_user_level_features)": [[66, "utils.calculate_user_level_features.UserLevelFeaturesCalculator", false]], "utils.assign_chunk_nums": [[63, "module-utils.assign_chunk_nums", false]], "utils.calculate_chat_level_features": [[64, "module-utils.calculate_chat_level_features", false]], "utils.calculate_conversation_level_features": [[65, "module-utils.calculate_conversation_level_features", false]], "utils.calculate_user_level_features": [[66, "module-utils.calculate_user_level_features", false]], "utils.check_embeddings": [[67, "module-utils.check_embeddings", false]], "utils.gini_coefficient": [[68, "module-utils.gini_coefficient", false]], "utils.preload_word_lists": [[70, "module-utils.preload_word_lists", false]], "utils.preprocess": [[71, "module-utils.preprocess", false]], "utils.summarize_features": [[72, "module-utils.summarize_features", false]], "utils.zscore_chats_and_conversation": [[73, "module-utils.zscore_chats_and_conversation", false]], "word_start() (in module features.politeness_v2_helper)": [[19, "features.politeness_v2_helper.word_start", false]]}, "objects": {"": [[2, 0, 0, "-", "feature_builder"]], "feature_builder": [[2, 1, 1, "", "FeatureBuilder"]], "feature_builder.FeatureBuilder": [[2, 2, 1, "", "chat_level_features"], [2, 2, 1, "", "conv_level_features"], [2, 2, 1, "", "featurize"], [2, 2, 1, "", "get_first_pct_of_chat"], [2, 2, 1, "", "merge_conv_data_with_original"], [2, 2, 1, "", "preprocess_chat_data"], [2, 2, 1, "", "save_features"], [2, 2, 1, "", "set_self_conv_data"], [2, 2, 1, "", "user_level_features"]], "features": [[3, 0, 0, "-", "basic_features"], [4, 0, 0, "-", "burstiness"], [5, 0, 0, "-", "certainty"], [6, 0, 0, "-", "discursive_diversity"], [7, 0, 0, "-", "fflow"], [8, 0, 0, "-", "get_all_DD_features"], [9, 0, 0, "-", "get_user_network"], [10, 0, 0, "-", "hedge"], [12, 0, 0, "-", "info_exchange_zscore"], [13, 0, 0, "-", "information_diversity"], [14, 0, 0, "-", "lexical_features_v2"], [15, 0, 0, "-", "named_entity_recognition_features"], [16, 0, 0, "-", "other_lexical_features"], [17, 0, 0, "-", "politeness_features"], [18, 0, 0, "-", "politeness_v2"], [19, 0, 0, "-", "politeness_v2_helper"], [20, 0, 0, "-", "question_num"], [21, 0, 0, "-", "readability"], [22, 0, 0, "-", "reddit_tags"], [23, 0, 0, "-", "temporal_features"], [24, 0, 0, "-", "textblob_sentiment_analysis"], [25, 0, 0, "-", "turn_taking_features"], [26, 0, 0, "-", "variance_in_DD"], [27, 0, 0, "-", "within_person_discursive_range"], [28, 0, 0, "-", "word_mimicry"]], "features.basic_features": [[3, 3, 1, "", "count_characters"], [3, 3, 1, "", "count_messages"], [3, 3, 1, "", "count_words"]], "features.burstiness": [[4, 3, 1, "", "burstiness"], [4, 3, 1, "", "get_team_burstiness"]], "features.certainty": [[5, 3, 1, "", "get_certainty"]], "features.discursive_diversity": [[6, 3, 1, "", "get_DD"], [6, 3, 1, "", "get_cosine_similarity"], [6, 3, 1, "", "get_unique_pairwise_combos"]], "features.fflow": [[7, 3, 1, "", "get_forward_flow"]], "features.get_all_DD_features": [[8, 3, 1, "", "conv_to_float_arr"], [8, 3, 1, "", "get_DD_features"]], "features.get_user_network": [[9, 3, 1, "", "get_user_network"], [9, 3, 1, "", "remove_active_user"]], "features.hedge": [[10, 3, 1, "", "is_hedged_sentence_1"]], "features.info_exchange_zscore": [[12, 3, 1, "", "get_info_exchange_wordcount"]], "features.information_diversity": [[13, 3, 1, "", "calculate_ID_score"], [13, 3, 1, "", "get_info_diversity"], [13, 3, 1, "", "info_diversity"], [13, 3, 1, "", "preprocessing"]], "features.lexical_features_v2": [[14, 3, 1, "", "get_liwc_count"], [14, 3, 1, "", "liwc_features"]], "features.named_entity_recognition_features": [[15, 3, 1, "", "built_spacy_ner"], [15, 3, 1, "", "calculate_named_entities"], [15, 3, 1, "", "named_entities"], [15, 3, 1, "", "num_named_entity"], [15, 3, 1, "", "train_spacy_ner"]], "features.other_lexical_features": [[16, 3, 1, "", "classify_NTRI"], [16, 3, 1, "", "get_proportion_first_pronouns"], [16, 3, 1, "", "get_word_TTR"]], "features.politeness_features": [[17, 3, 1, "", "get_politeness_strategies"]], "features.politeness_v2": [[18, 3, 1, "", "get_politeness_v2"]], "features.politeness_v2_helper": [[19, 3, 1, "", "Question"], [19, 3, 1, "", "adverb_limiter"], [19, 3, 1, "", "bare_command"], [19, 3, 1, "", "clean_text"], [19, 3, 1, "", "commit_data"], [19, 3, 1, "", "conjection_seperator"], [19, 3, 1, "", "count_matches"], [19, 3, 1, "", "count_spacy_matches"], [19, 3, 1, "", "feat_counts"], [19, 3, 1, "", "get_dep_pairs"], [19, 3, 1, "", "get_dep_pairs_noneg"], [19, 3, 1, "", "load_saved_data"], [19, 3, 1, "", "load_to_dict"], [19, 3, 1, "", "load_to_lists"], [19, 3, 1, "", "phrase_split"], [19, 3, 1, "", "prep_simple"], [19, 3, 1, "", "prep_whole"], [19, 3, 1, "", "punctuation_seperator"], [19, 3, 1, "", "sentence_pad"], [19, 3, 1, "", "sentence_split"], [19, 3, 1, "", "sentenciser"], [19, 3, 1, "", "token_count"], [19, 3, 1, "", "word_start"]], "features.question_num": [[20, 3, 1, "", "calculate_num_question_naive"]], "features.readability": [[21, 3, 1, "", "classify_text_dalechall"], [21, 3, 1, "", "count_difficult_words"], [21, 3, 1, "", "count_syllables"], [21, 3, 1, "", "dale_chall_helper"]], "features.reddit_tags": [[22, 3, 1, "", "count_all_caps"], [22, 3, 1, "", "count_bullet_points"], [22, 3, 1, "", "count_ellipses"], [22, 3, 1, "", "count_emojis"], [22, 3, 1, "", "count_emphasis"], [22, 3, 1, "", "count_line_breaks"], [22, 3, 1, "", "count_links"], [22, 3, 1, "", "count_numbering"], [22, 3, 1, "", "count_parentheses"], [22, 3, 1, "", "count_quotes"], [22, 3, 1, "", "count_responding_to_someone"], [22, 3, 1, "", "count_user_references"]], "features.temporal_features": [[23, 3, 1, "", "coerce_to_date_or_number"], [23, 3, 1, "", "get_time_diff"], [23, 3, 1, "", "get_time_diff_startend"]], "features.textblob_sentiment_analysis": [[24, 3, 1, "", "get_polarity_score"], [24, 3, 1, "", "get_subjectivity_score"]], "features.turn_taking_features": [[25, 3, 1, "", "count_turn_taking_index"], [25, 3, 1, "", "count_turns"], [25, 3, 1, "", "get_turn"]], "features.variance_in_DD": [[26, 3, 1, "", "get_variance_in_DD"]], "features.within_person_discursive_range": [[27, 3, 1, "", "get_nan_vector"], [27, 3, 1, "", "get_within_person_disc_range"]], "features.word_mimicry": [[28, 3, 1, "", "Content_mimicry_score"], [28, 3, 1, "", "Content_mimicry_score_per_conv"], [28, 3, 1, "", "computeTF"], [28, 3, 1, "", "compute_frequency"], [28, 3, 1, "", "compute_frequency_per_conv"], [28, 3, 1, "", "function_mimicry_score"], [28, 3, 1, "", "get_content_words_in_message"], [28, 3, 1, "", "get_function_words_in_message"], [28, 3, 1, "", "get_mimicry_bert"], [28, 3, 1, "", "get_moving_mimicry"], [28, 3, 1, "", "mimic_words"]], "utils": [[63, 0, 0, "-", "assign_chunk_nums"], [64, 0, 0, "-", "calculate_chat_level_features"], [65, 0, 0, "-", "calculate_conversation_level_features"], [66, 0, 0, "-", "calculate_user_level_features"], [67, 0, 0, "-", "check_embeddings"], [68, 0, 0, "-", "gini_coefficient"], [70, 0, 0, "-", "preload_word_lists"], [71, 0, 0, "-", "preprocess"], [72, 0, 0, "-", "summarize_features"], [73, 0, 0, "-", "zscore_chats_and_conversation"]], "utils.assign_chunk_nums": [[63, 3, 1, "", "assign_chunk_nums"], [63, 3, 1, "", "create_chunks"], [63, 3, 1, "", "create_chunks_messages"], [63, 3, 1, "", "reduce_chunks"]], "utils.calculate_chat_level_features": [[64, 1, 1, "", "ChatLevelFeaturesCalculator"]], "utils.calculate_chat_level_features.ChatLevelFeaturesCalculator": [[64, 2, 1, "", "calculate_chat_level_features"], [64, 2, 1, "", "calculate_hedge_features"], [64, 2, 1, "", "calculate_politeness_sentiment"], [64, 2, 1, "", "calculate_politeness_v2"], [64, 2, 1, "", "calculate_textblob_sentiment"], [64, 2, 1, "", "calculate_vector_word_mimicry"], [64, 2, 1, "", "calculate_word_mimicry"], [64, 2, 1, "", "concat_bert_features"], [64, 2, 1, "", "get_certainty_score"], [64, 2, 1, "", "get_dale_chall_score_and_classfication"], [64, 2, 1, "", "get_forward_flow"], [64, 2, 1, "", "get_named_entity"], [64, 2, 1, "", "get_reddit_features"], [64, 2, 1, "", "get_temporal_features"], [64, 2, 1, "", "info_exchange"], [64, 2, 1, "", "lexical_features"], [64, 2, 1, "", "other_lexical_features"], [64, 2, 1, "", "positivity_zscore"], [64, 2, 1, "", "text_based_features"]], "utils.calculate_conversation_level_features": [[65, 1, 1, "", "ConversationLevelFeaturesCalculator"]], "utils.calculate_conversation_level_features.ConversationLevelFeaturesCalculator": [[65, 2, 1, "", "calculate_conversation_level_features"], [65, 2, 1, "", "calculate_info_diversity"], [65, 2, 1, "", "calculate_team_burstiness"], [65, 2, 1, "", "get_conversation_level_aggregates"], [65, 2, 1, "", "get_discursive_diversity_features"], [65, 2, 1, "", "get_gini_features"], [65, 2, 1, "", "get_turn_taking_features"], [65, 2, 1, "", "get_user_level_aggregates"]], "utils.calculate_user_level_features": [[66, 1, 1, "", "UserLevelFeaturesCalculator"]], "utils.calculate_user_level_features.UserLevelFeaturesCalculator": [[66, 2, 1, "", "calculate_user_level_features"], [66, 2, 1, "", "get_centroids"], [66, 2, 1, "", "get_user_level_averaged_features"], [66, 2, 1, "", "get_user_level_summary_statistics_features"], [66, 2, 1, "", "get_user_level_summed_features"], [66, 2, 1, "", "get_user_network"]], "utils.check_embeddings": [[67, 3, 1, "", "check_embeddings"], [67, 3, 1, "", "fix_abbreviations"], [67, 3, 1, "", "generate_bert"], [67, 3, 1, "", "generate_certainty_pkl"], [67, 3, 1, "", "generate_lexicon_pkl"], [67, 3, 1, "", "generate_vect"], [67, 3, 1, "", "get_sentiment"], [67, 3, 1, "", "load_liwc_dict"], [67, 3, 1, "", "read_in_lexicons"]], "utils.gini_coefficient": [[68, 3, 1, "", "get_gini"], [68, 3, 1, "", "gini_coefficient"]], "utils.preload_word_lists": [[70, 3, 1, "", "get_dale_chall_easy_words"], [70, 3, 1, "", "get_first_person_words"], [70, 3, 1, "", "get_function_words"], [70, 3, 1, "", "get_question_words"]], "utils.preprocess": [[71, 3, 1, "", "assert_key_columns_present"], [71, 3, 1, "", "compress"], [71, 3, 1, "", "create_cumulative_rows"], [71, 3, 1, "", "get_turn_id"], [71, 3, 1, "", "preprocess_conversation_columns"], [71, 3, 1, "", "preprocess_naive_turns"], [71, 3, 1, "", "preprocess_text"], [71, 3, 1, "", "preprocess_text_lowercase_but_retain_punctuation"]], "utils.summarize_features": [[72, 3, 1, "", "get_average"], [72, 3, 1, "", "get_max"], [72, 3, 1, "", "get_min"], [72, 3, 1, "", "get_stdev"], [72, 3, 1, "", "get_sum"], [72, 3, 1, "", "get_user_average_dataframe"], [72, 3, 1, "", "get_user_sum_dataframe"]], "utils.zscore_chats_and_conversation": [[73, 3, 1, "", "get_zscore_across_all_chats"], [73, 3, 1, "", "get_zscore_across_all_conversations"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function"}, "terms": {"": [0, 1, 2, 4, 5, 9, 11, 13, 14, 25, 28, 29, 31, 32, 34, 35, 36, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 55, 59, 61, 62, 64, 65, 66], "0": [0, 1, 2, 5, 10, 13, 16, 21, 24, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 43, 45, 46, 47, 50, 51, 53, 55, 59, 61], "00222437221134802": [5, 64], "01": 51, "02": 51, "04": 40, "0496": [21, 33], "05": [13, 40, 50, 51], "06": 51, "08": [42, 50], "09": [45, 46, 50], "1": [0, 1, 2, 3, 10, 13, 22, 24, 32, 34, 35, 37, 38, 40, 41, 43, 44, 45, 46, 47, 48, 51, 53, 55, 56, 57, 59, 61, 62], "10": [1, 5, 6, 21, 24, 33, 59, 61, 64], "100": [1, 21, 33, 37, 42, 47, 62], "10th": 33, "1145": [21, 24], "1177": [5, 64], "11th": 33, "12": [35, 45, 46, 50], "1287": 6, "12th": 33, "13": 50, "14": 50, "15": [37, 50], "1579": [21, 33], "17": 50, "1948": 33, "195": 36, "1977": 62, "1lpngokujsx": 5, "1st": 50, "1st_person": 50, "1st_person_pl": 50, "1st_person_start": 50, "2": [1, 2, 34, 35, 41, 47, 59, 61, 62], "20": [37, 59], "2004": 42, "2007": [0, 5, 42, 67], "2009": 60, "2012": 55, "2013": [12, 16, 31, 32, 36, 37, 38, 41, 43, 50, 52, 54, 70], "2015": [53, 58, 60, 67], "2016": 4, "2017": 13, "2018": [40, 44, 55], "2019": [35, 52], "2020": [18, 21, 24, 33, 49, 50, 56, 57], "2021": [1, 6, 43, 44], "2022": [13, 34], "2023": [1, 5, 30, 59, 61, 64], "2024": [40, 42], "21": 59, "22": [41, 50], "2384068": 4, "24": [1, 61], "25": 47, "27": [42, 50], "28": 50, "29": 50, "2nd": 50, "2nd_person": 50, "2nd_person_start": 50, "3": [0, 1, 2, 21, 34, 41, 42, 51, 59, 61, 71], "30": 50, "3000": 33, "32": [34, 50], "3432929": [21, 24], "35": 51, "36": 50, "38": 50, "39": 49, "39512260": 68, "3n": 59, "4": [0, 1, 5, 13, 21, 30, 33, 41, 42, 56, 61, 62], "4274": 6, "43": 50, "45": 50, "47": 50, "49": 50, "4pit4bqz6": 5, "4th": [21, 33], "5": [1, 5, 21, 30, 33, 37, 41, 59], "50": [1, 47], "52": 50, "53": 50, "57": 50, "58": 50, "5th": 33, "6": [1, 33, 43], "60": 51, "63": 50, "6365": 21, "64": 67, "68": 47, "6th": 33, "7": [30, 33, 48], "70": 50, "78": [35, 50], "7th": 33, "8": [1, 30, 33], "80": [21, 70], "82": 41, "85": 34, "86": 35, "87": 50, "89": [45, 46], "8th": 33, "9": [2, 5, 21, 30, 33, 40, 47, 50], "9123": 47, "92": 51, "93chall_readability_formula": [21, 70], "94": 15, "95": 47, "95450": 42, "97": 51, "9855072464": 47, "9992": 47, "99954": 47, "9th": 33, "A": [1, 2, 4, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 25, 28, 33, 34, 35, 37, 38, 40, 41, 44, 45, 46, 47, 49, 50, 51, 52, 57, 59, 60, 61, 62, 64, 66, 67, 68, 70, 71, 72, 73], "And": [1, 62], "As": [1, 31, 35, 36, 40, 45, 61], "But": [1, 50, 62], "By": [1, 42, 50], "For": [0, 1, 31, 34, 37, 41, 42, 43, 47, 49, 54, 56, 59, 62, 65], "If": [0, 1, 2, 5, 21, 29, 30, 35, 42, 45, 47, 50, 55, 61, 62, 63, 64, 67, 71], "In": [1, 21, 30, 31, 34, 35, 36, 37, 39, 41, 42, 45, 46, 47, 50, 55, 59, 61, 62], "It": [1, 2, 31, 32, 33, 36, 37, 41, 44, 45, 46, 50, 64, 65, 66, 67, 71], "NO": 37, "NOT": [1, 61], "No": [19, 53], "Not": 41, "One": [1, 37, 61], "That": [29, 55], "The": [1, 2, 3, 4, 5, 7, 9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 59, 60, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73], "Then": [1, 55, 61], "There": [1, 11, 32, 61, 66], "These": [1, 11, 17, 32, 34, 42, 48, 52, 61, 62, 69], "To": [0, 1, 29, 31, 34, 37, 40, 42, 55, 56, 57, 61, 62], "WITH": 21, "Will": 50, "_deviat": 55, "_preprocessed_": 0, "abbrevi": 67, "abil": [13, 29], "abl": [31, 36, 61], "abort": 1, "about": [1, 12, 29, 31, 36, 41, 47, 61, 62], "abov": [1, 21, 34, 61], "abstract_id": 4, "academ": 42, "accept": [0, 1, 58, 61], "access": [0, 1, 15, 61], "accommod": [28, 32, 39, 45, 46, 64, 65, 66], "accord": [21, 37, 59, 64, 70], "accordingli": 63, "account": [1, 29, 32, 42], "accus": 50, "achiev": [50, 62], "acknowledg": 49, "acm": [21, 24], "acommod": 36, "across": [1, 13, 28, 31, 34, 40, 41, 50, 62, 64, 73], "action": 59, "activ": [1, 9, 44, 55, 71], "actual": [41, 56], "ad": [61, 62, 71], "adapt": 59, "add": [0, 1, 2, 21, 51, 61], "addit": [0, 2, 32, 34, 42, 63, 69], "addition": [0, 30, 31, 32, 54], "address": 1, "adjac": 71, "adjust": [0, 21, 37, 63], "advanc": [31, 36], "advantag": 4, "adverb": [19, 31, 36], "adverb_limit": [19, 49], "affect": [0, 1, 29, 35, 44], "affirm": 49, "after": [0, 1, 31, 34, 36, 43, 61, 62, 64], "again": [32, 34], "against": [28, 31, 36, 52], "agarw": 62, "aggreg": [0, 1, 3, 11, 37, 44, 61, 62, 65, 66, 72], "agre": 47, "agreement": 49, "ah": [31, 36], "ai": 62, "aim": [39, 62], "airtim": [37, 62], "al": [1, 5, 16, 18, 21, 24, 30, 31, 32, 33, 34, 35, 36, 38, 42, 43, 44, 49, 50, 52, 53, 54, 56, 57, 58, 59, 60, 64], "algorithm": [56, 57], "align": [35, 51], "all": [0, 1, 2, 6, 12, 13, 15, 19, 22, 28, 30, 31, 34, 35, 36, 37, 40, 41, 46, 48, 49, 51, 52, 55, 58, 61, 62, 64, 66, 71, 73], "allow": [0, 1], "almaatouq": 59, "along": 1, "alongsid": 1, "alphabet": 49, "alphanumer": 71, "alreadi": [0, 1, 2, 4, 10, 12, 16, 67], "also": [0, 1, 2, 28, 30, 31, 32, 34, 36, 37, 38, 42, 47, 51, 54, 60, 61, 62, 64, 65, 67, 69, 71], "alsobai": 59, "altern": 59, "although": [1, 23, 31, 36], "alwai": [1, 55], "am": [31, 36, 42, 54, 62], "amaz": [48, 56], "ambient": 32, "american": 33, "ami": [47, 59, 62], "amic": 62, "among": [36, 37, 52, 55, 62], "amongst": [6, 35, 48], "an": [1, 2, 5, 8, 11, 12, 13, 21, 29, 30, 31, 32, 33, 34, 36, 38, 40, 41, 42, 45, 47, 48, 50, 51, 52, 54, 59, 60, 61, 62, 63, 65, 66, 68], "analys": [1, 62], "analysi": [0, 1, 11, 52, 62, 67, 71], "analyt": 62, "analyz": [0, 1, 2, 13, 14, 16, 17, 19, 20, 21, 22, 24, 28, 43, 52, 62, 67, 71], "analyze_first_pct": [0, 1, 2], "angri": 47, "ani": [0, 1, 29, 31, 33, 38, 54, 62, 71], "annot": [17, 50], "anoth": [30, 34, 36, 48], "answer": 29, "anybodi": [31, 36], "anyth": [1, 2, 23, 31, 36, 56], "anywher": [31, 36], "apartment": 42, "api": 47, "api_refer": 24, "apolog": [17, 50], "apologi": 49, "appear": [0, 15, 28, 31, 37, 38, 42, 64], "append": [1, 17, 64, 65, 66, 67], "appli": [4, 13, 18, 62, 64, 69], "applic": [29, 71], "appreci": 50, "approach": [32, 38, 42, 45, 46, 49, 53, 64], "appropri": [31, 69], "ar": [0, 1, 2, 3, 5, 9, 10, 11, 15, 17, 19, 21, 23, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 51, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 69, 71], "arcross": 34, "area": 62, "aren": [31, 36], "around": 2, "arous": 48, "arrai": [6, 8, 68], "articl": [37, 50], "ask": [20, 47, 54], "ask_ag": 49, "aspect": [50, 62], "assert_key_columns_pres": 71, "assign": [1, 31, 36, 38, 45, 46, 52, 59, 61, 63, 71], "assign_chunk_num": 69, "associ": [4, 15, 21, 29, 30, 31, 32, 36, 40, 45, 46, 47, 48, 61], "assum": [0, 1, 2, 10, 12, 16, 23, 31, 41, 60, 61, 67, 71], "assumpt": [1, 41, 61], "asterisk": 22, "attribut": [1, 11, 34, 51, 52, 56, 62], "author": [5, 31, 36, 59], "auto": 2, "automat": [0, 1, 61, 69], "auxiliari": [31, 36], "avail": [1, 61, 62, 63, 64, 67], "averag": [11, 13, 28, 30, 33, 34, 35, 40, 41, 46, 52, 64, 65, 66, 72], "avil": 62, "avoid": 30, "awar": 29, "awesom": 62, "b": [4, 34, 35, 45, 46, 55, 62], "back": 62, "bag": [32, 38, 42, 45, 46, 49, 53, 56, 57], "bare_command": [19, 49], "base": [0, 1, 2, 15, 18, 19, 31, 32, 34, 35, 36, 37, 40, 42, 51, 52, 53, 54, 55, 56, 57, 61, 62, 63, 64, 65, 66, 71], "basic": [10, 11, 12, 16, 61, 62], "basic_featur": 11, "batch": 67, "batch_num": 1, "batch_siz": 67, "bay": [56, 57], "bbevi": 18, "becaus": [1, 2, 12, 21, 31, 36, 40, 56, 61], "becom": [44, 61, 62], "been": [1, 2, 12, 16, 31, 36, 61], "befor": [0, 1, 2, 17, 31, 36, 45, 48], "beforehand": 64, "begin": [34, 54, 58, 61, 62, 63], "behavior": [0, 2, 62, 63], "being": [4, 13, 14, 16, 17, 20, 21, 24, 31, 32, 36, 43, 47, 51, 55, 56, 60], "belong": 1, "below": [1, 11, 21, 33, 36, 45, 48, 51, 61, 62, 69], "ber": 54, "bert": [0, 1, 31, 35, 36, 39, 46, 61, 64, 67], "bert_path": 67, "bert_sentiment_data": [1, 61, 64], "best": 29, "better": [31, 61], "between": [4, 6, 13, 21, 23, 24, 28, 30, 31, 34, 35, 36, 37, 40, 45, 46, 55, 58, 59, 62, 64, 65], "betwen": 34, "beyond": 2, "big": 59, "binari": [10, 32, 38], "blame": 47, "blob": [1, 24, 61, 67], "block": [22, 32, 48, 59], "blog": 15, "bodi": 67, "bold": [22, 64], "bool": [2, 63, 67, 71], "bootstrap": 62, "both": [1, 2, 42, 52, 54, 55, 59, 62], "bother": 50, "bottom": 59, "bought": 41, "bound": [29, 35, 36, 37, 52, 55], "boundari": [34, 35], "boyd": [0, 42], "break": [22, 48, 64], "brief": 44, "bring": 0, "broader": 52, "broken": 59, "btw": 50, "bug": [1, 61], "build": [1, 7, 34, 45, 46, 62], "built": [11, 42, 67], "built_spacy_n": 15, "bullet": [22, 48, 64], "bunch": 59, "burst": 58, "bursti": [1, 11, 39, 58, 61, 65], "by_the_wai": 49, "c": [12, 34, 35, 45, 46, 62], "cach": [0, 1, 2, 51, 61], "calcul": [2, 5, 11, 12, 16, 18, 21, 28, 33, 41, 48, 49, 50, 56, 57, 58, 60, 62, 63, 64, 65, 66, 67, 68, 72, 73], "calculate_chat_level_featur": [1, 61, 69], "calculate_conversation_level_featur": 69, "calculate_hedge_featur": 64, "calculate_id_scor": 13, "calculate_info_divers": 65, "calculate_named_ent": 15, "calculate_num_question_na": 20, "calculate_politeness_senti": 64, "calculate_politeness_v2": 64, "calculate_team_bursti": 65, "calculate_textblob_senti": 64, "calculate_user_level_featur": 69, "calculate_vector_word_mimicri": 64, "calculate_word_mimicri": 64, "call": [1, 2, 8, 13, 61, 62, 64, 69], "can": [0, 1, 11, 23, 31, 32, 33, 34, 36, 37, 42, 43, 44, 47, 48, 49, 50, 52, 54, 60, 61, 62, 69], "can_you": 49, "cannot": [1, 31, 36, 45, 46, 49, 62], "cao": [21, 24, 33, 43, 44, 56, 57, 62], "cap": [22, 48, 64], "capit": [0, 2, 48], "captur": [29, 30, 32, 34, 35, 38, 41, 42, 55], "caract": 40, "cardiffnlp": [1, 61], "carefulli": 60, "carri": 31, "casa_token": 5, "case": [1, 13, 16, 28, 29, 30, 31, 36, 37, 41, 45, 46, 51, 55, 56, 59, 61], "casual": 43, "categori": [21, 32, 42, 45, 46, 49, 52, 67], "caus": [31, 32, 36, 59], "caveat": 1, "center": 62, "central": 34, "centroid": [34, 66], "certain": [5, 19, 30, 42, 45, 46, 49], "certainli": 42, "certainti": [11, 38, 39, 42, 64, 67], "cfm": 4, "chall": [1, 21, 39, 64, 70], "chang": [1, 34, 50, 61, 71], "charact": [2, 3, 15, 19, 37, 49, 62, 64, 65, 66, 71], "characterist": 62, "chat": [0, 1, 2, 4, 5, 6, 7, 8, 12, 13, 14, 16, 23, 25, 28, 29, 32, 35, 36, 41, 44, 45, 46, 49, 59, 61, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73], "chat_data": [2, 6, 7, 8, 26, 27, 28, 63, 64, 65, 66, 67, 71], "chat_df": 14, "chat_featur": [1, 61], "chat_level_data": 72, "chat_level_featur": 2, "chatlevelfeaturescalcul": [1, 2, 17, 21, 61, 64, 69], "chats_data": 73, "check": [19, 23, 44, 64, 67, 71], "check_embed": [1, 61, 69], "chen": 62, "choos": 60, "chose": 1, "chronolog": 1, "chunk": [34, 59, 63], "chunk_num": 63, "circlelyt": 13, "citat": [21, 24], "cite": 50, "clarif": [16, 32, 64], "class": [1, 2, 31, 61, 62, 64, 65, 66], "classif": [21, 64], "classifi": [16, 21, 50, 56, 57], "classify_ntri": 16, "classify_text_dalechal": 21, "clean": [2, 17, 19, 67], "clean_text": 19, "clear": 1, "close": [31, 42, 48, 62], "closer": [45, 46, 59], "clue": 62, "cmu": 12, "code": [6, 18, 29, 32, 51, 55, 61, 62, 68], "coeffici": [4, 39, 62, 65, 68], "coerce_to_date_or_numb": 23, "cognit": 62, "col": 2, "colab": [0, 1], "collabor": [59, 62], "collaps": 2, "collect": [1, 2, 34, 49, 50, 52, 61, 62], "colleg": 33, "column": [0, 2, 4, 6, 7, 8, 9, 12, 13, 14, 16, 18, 23, 25, 28, 51, 56, 62, 63, 64, 65, 66, 67, 68, 71, 72, 73], "column_count_frequ": 28, "column_count_mim": 28, "column_mimc": 28, "column_nam": 71, "column_to_summar": 72, "com": [1, 2, 4, 5, 13, 15, 18, 64, 67, 68, 71], "comb": 62, "combin": [0, 1, 6, 28, 64, 71], "come": [1, 12, 13, 21, 32, 33, 58, 61], "comm": [1, 61], "command": [1, 61], "comment": 48, "commit": 23, "commit_data": 19, "common": [0, 32, 62, 64], "commonli": 37, "commun": [0, 1, 11, 42, 44, 48, 55, 60, 62, 64], "companion": 1, "compar": [2, 31, 35, 44, 45, 52, 64, 71, 73], "compat": [1, 61], "complement": [31, 36], "complet": [1, 2, 31, 55], "complex": [0, 35, 43, 50, 62], "compon": 50, "comprehens": [33, 48], "compress": 71, "comput": [0, 2, 4, 5, 6, 10, 11, 12, 13, 14, 28, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 45, 46, 49, 52, 55, 62, 64, 65, 66, 69, 73], "compute_frequ": 28, "compute_frequency_per_conv": 28, "compute_vectors_from_preprocess": [0, 2], "computetf": 28, "conain": 61, "concat_bert_featur": [1, 61, 64], "concaten": [19, 49, 64, 71], "concentr": 55, "concept": [29, 39, 42, 62], "conceptu": [61, 62], "concis": 43, "concret": 29, "conduct": 1, "confid": [2, 5, 15, 30, 47, 64], "conflict": 62, "confound": 44, "congruent": 34, "conjection_seper": 19, "conjunct": [19, 31, 36, 49], "conjunction_start": 49, "connect": 39, "conscious": 35, "consecut": 22, "consequ": 0, "consid": [1, 33, 37], "consider": [61, 62], "consist": [31, 36, 40, 41], "constitut": 41, "constrain": [34, 35], "construct": [11, 55, 62], "constructor": 47, "consult": 5, "contact": 0, "contain": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 23, 25, 28, 29, 30, 35, 38, 42, 47, 49, 55, 61, 62, 63, 64, 67, 71, 72, 73], "content": [0, 1, 12, 13, 28, 34, 36, 39, 41, 42, 45, 46, 62, 64, 67], "content_mimicry_scor": 28, "content_mimicry_score_per_conv": 28, "content_word_accommod": 31, "content_word_accommodation_per_conv": 31, "content_word_mimicri": 28, "contentcod": 67, "contentcodingdictionari": 67, "context": [2, 32, 42, 48, 62, 71], "continu": [56, 57], "contract": 49, "contrast": 39, "contribut": [13, 34, 37, 62], "control": 1, "conv": [1, 61], "conv_data": [2, 65], "conv_features_al": [1, 61], "conv_features_bas": [1, 61], "conv_level_featur": 2, "conv_to_float_arr": 8, "convei": [6, 34, 52], "conveni": [1, 61], "convers": [0, 2, 3, 4, 6, 7, 8, 9, 12, 13, 23, 25, 28, 29, 31, 34, 35, 36, 37, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 52, 55, 58, 59, 61, 63, 64, 65, 66, 68, 71, 72, 73], "conversation_id": [2, 28, 61, 71], "conversation_id_col": [0, 1, 2, 4, 6, 7, 8, 9, 13, 23, 25, 26, 27, 61, 63, 64, 65, 66, 68, 72, 73], "conversation_num": [0, 1, 2, 6, 7, 64, 66, 71, 73], "conversationlevelfeaturescalcul": [2, 65, 69], "convert": [8, 41, 49, 67, 71], "convict": 5, "convokit": [17, 50, 62, 64], "coordin": 55, "copi": [0, 1, 42], "copular": [31, 36], "core": [34, 69], "cornel": 17, "corpu": 50, "corrado": 37, "correl": [41, 55], "correspond": [30, 34, 35, 40, 49, 55, 66], "cosin": [6, 7, 13, 28, 31, 34, 35, 36, 40, 45, 46, 65], "could": [1, 31, 33, 36, 50, 54], "could_you": 49, "couldn": [31, 36], "count": [0, 1, 3, 12, 14, 15, 16, 19, 21, 25, 28, 30, 31, 32, 36, 39, 41, 43, 44, 49, 52, 53, 54, 56, 58, 64, 65, 66], "count_all_cap": 22, "count_bullet_point": 22, "count_charact": 3, "count_difficult_word": 21, "count_ellips": 22, "count_emoji": 22, "count_emphasi": 22, "count_line_break": 22, "count_link": 22, "count_match": [19, 49], "count_messag": 3, "count_numb": 22, "count_parenthes": 22, "count_quot": 22, "count_responding_to_someon": 22, "count_spacy_match": 19, "count_syl": 21, "count_turn": 25, "count_turn_taking_index": 25, "count_user_refer": 22, "count_word": 3, "countabl": 65, "countd": 36, "counterfactu": 50, "cours": [16, 31, 34, 36, 63], "cover": 28, "creat": [0, 1, 2, 13, 19, 31, 40, 42, 61, 62, 64, 65, 66, 71], "create_chunk": 63, "create_chunks_messag": 63, "create_cumulative_row": 71, "credit": 33, "crowd": 13, "csv": [1, 2, 61, 62, 67], "cumul": [1, 2, 71], "cumulative_group": [0, 1, 2, 71], "current": [1, 11, 23, 31, 34, 35, 36, 40, 45, 46, 58, 61, 64, 71], "curt": 43, "custom": [0, 14, 62], "custom_featur": [0, 1, 2, 61], "custom_liwc_dictionari": [14, 64], "custom_liwc_dictionary_path": [0, 2, 42], "customiz": 62, "cut": 1, "cutoff": [2, 15, 47, 64], "d": [1, 31, 34, 36, 61], "dale": [1, 21, 39, 64, 70], "dale_chall_help": 21, "danescu": 50, "dash": 22, "data": [0, 2, 6, 7, 8, 9, 13, 19, 20, 32, 37, 40, 41, 47, 51, 55, 61, 62, 63, 64, 65, 66, 67, 68, 71, 72, 73], "datafram": [0, 1, 2, 4, 6, 7, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19, 23, 25, 28, 37, 42, 47, 49, 59, 61, 62, 63, 64, 65, 66, 67, 68, 71, 72, 73], "dataknowsal": 15, "dataset": [1, 2, 9, 12, 13, 28, 31, 41, 47, 52, 61, 64, 65, 66, 73], "date": [1, 42, 61], "datetim": [23, 58], "dcosta": 62, "deal": [50, 59], "death": 1, "debat": 59, "decid": 62, "decis": [1, 13, 62], "declar": [1, 62, 69], "deepli": 62, "default": [0, 1, 2, 5, 13, 16, 30, 34, 35, 42, 47, 62, 63, 64, 66, 67, 71, 73], "defer": [17, 50], "defin": [0, 11, 21, 31, 34, 36, 40, 59, 62, 64, 65, 66, 70], "definit": [1, 3, 44], "degre": [6, 30, 36, 45, 46, 55], "delet": 29, "deliber": 1, "demo": 61, "democrat": 1, "demystifi": 62, "denomin": 59, "densiti": 60, "dep_": 49, "dep_pair": 19, "depend": [0, 1, 10, 19, 32, 49, 52, 61, 63], "deriv": [2, 11, 65, 66], "describ": [1, 11, 62], "descript": [1, 61], "design": [0, 1, 2, 13, 34, 62], "desir": [2, 63, 72], "detail": [0, 33, 41, 43, 61, 62], "detect": [1, 32, 37, 38, 47, 48, 49, 54], "determin": [13, 18, 31, 35, 36, 40, 45, 46, 71], "dev": 24, "develop": [5, 37, 40, 62], "deviat": [4, 5, 29, 40, 41, 55, 58, 65, 72, 73], "df": [4, 8, 9, 12, 13, 16, 18, 23, 28, 63, 71], "dic": [2, 14, 42, 67], "diccategori": 67, "dict": [14, 17, 19, 28, 64, 67], "dicterm": 67, "dictext": 67, "dictionari": [0, 1, 2, 14, 15, 17, 19, 28, 30, 42, 49, 61, 64, 67], "did": [1, 31, 36, 37, 47, 50, 54, 62], "didn": [31, 36], "differ": [0, 1, 2, 4, 11, 12, 23, 28, 29, 31, 34, 36, 37, 39, 40, 44, 45, 46, 47, 49, 55, 62, 63, 64, 65, 66, 67, 71], "differenti": [49, 59], "difficult": [21, 33], "difficult_word": 21, "difficulti": 33, "dimens": [40, 62], "dimension": [34, 35], "dinner": 41, "direct": [34, 43, 45, 47, 50, 69], "direct_quest": [32, 50, 54], "direct_start": 50, "directli": [1, 62, 69], "directori": [0, 2, 19, 61, 65, 67], "disagr": 49, "disagre": 51, "discours": [31, 36], "discret": [31, 36, 45, 46], "discurs": [0, 1, 6, 8, 39, 40, 61, 65, 66], "discursive_divers": 11, "discus": 8, "discuss": [0, 1, 31, 34, 39, 40, 42, 43, 61, 62, 71], "dispers": 68, "displai": [1, 34, 42, 46, 61], "dispos": 1, "distanc": [34, 35, 40], "distinct": [31, 36, 59], "distinguish": 59, "distribut": 31, "div": 16, "diverg": [6, 34, 35], "divers": [0, 1, 6, 8, 13, 39, 61, 65], "divid": [16, 34, 59, 63], "dl": [21, 24], "do": [0, 1, 29, 31, 34, 36, 37, 43, 49, 50, 54, 62, 69], "doc": 19, "doc_top": 13, "document": [1, 17, 61, 69], "doe": [1, 2, 29, 40, 42, 43, 45, 47, 54, 61, 71], "doesn": [0, 1, 2, 29, 31, 36, 45, 61, 67], "doi": [5, 6, 21, 24, 64], "domain": [31, 50], "don": [31, 36, 49, 54, 62, 67], "done": [2, 50], "dot": 22, "doubl": 30, "down": [31, 36], "download": [1, 61], "download_resourc": [1, 61], "downstream": [17, 62], "dozen": 62, "drive": [62, 69], "driver": [2, 61, 64, 65, 66], "drop": [0, 2, 64], "due": [34, 59], "duncan": 62, "duplic": [1, 2, 71], "durat": [58, 63], "dure": [2, 55, 59, 62], "dynam": [59, 61], "e": [0, 1, 2, 4, 15, 20, 29, 30, 31, 32, 34, 35, 36, 37, 38, 41, 42, 47, 48, 49, 52, 54, 56, 59, 61, 63, 65, 66, 67, 71], "e2": [21, 70], "each": [0, 1, 2, 3, 4, 7, 8, 9, 11, 12, 15, 17, 19, 23, 25, 28, 30, 31, 34, 35, 36, 37, 40, 41, 42, 44, 45, 46, 47, 49, 50, 51, 52, 55, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73], "earlier": [0, 1, 2, 42], "easi": [1, 21, 62, 70], "easier": 21, "easili": 33, "easy_word": 21, "eat": 34, "echo": 31, "econom": 37, "edg": [29, 59], "edu": [1, 12, 16, 17, 70], "effect": [1, 41], "effici": 1, "effort": 55, "either": [20, 23, 52, 55], "elaps": [23, 58], "element": [1, 6], "ellips": [22, 48, 64], "els": [1, 22, 47, 64], "embed": [8, 31, 34, 35, 36, 45, 46, 65, 66, 67, 69], "emili": [30, 35, 45, 46, 47, 59, 62], "emoji": [22, 48, 64], "emot": [1, 61], "emoticon": 48, "emphas": [22, 48, 64], "emphasi": 48, "empirica": [1, 2, 71], "emploi": 45, "empti": [0, 2, 13, 64], "en": [1, 21, 24, 61, 70], "en_core_web_sm": [1, 61], "enabl": 71, "enclos": 22, "encod": [1, 8], "encompass": 62, "encount": [1, 34, 35, 61], "encourag": 64, "end": [0, 1, 15, 20, 23, 34, 54, 62, 63], "engag": 43, "engin": 2, "english": [34, 42], "enjoi": 62, "ensur": [0, 1, 40, 49, 61, 63, 67, 71], "entir": [1, 12, 28, 31, 36, 40, 41, 52, 59, 62, 73], "entiti": [0, 1, 2, 15, 39, 64], "entityrecogn": 47, "entri": [1, 28, 61], "ep8dauru1ogvjurwdbof5h6ayfbslvughjyiv31d_as6ppbt": 5, "equal": [1, 21, 23, 34, 37, 40, 55, 59, 61, 62, 63], "equival": [0, 1, 41, 55, 61], "eric": 62, "error": [1, 16, 61], "especi": [41, 62], "essenti": [51, 71], "establish": 31, "estim": 31, "et": [1, 5, 16, 18, 21, 24, 30, 31, 32, 33, 34, 35, 36, 38, 42, 43, 44, 49, 50, 52, 53, 54, 56, 57, 58, 59, 60, 64], "etc": [10, 15, 16, 17, 42], "evalu": [5, 47, 50], "evan": 62, "even": [0, 1, 2, 34, 37, 42, 62, 63, 67], "evenli": [34, 55], "event": [1, 34, 55, 61], "ever": 62, "everi": [1, 4, 13, 31, 34, 35, 36, 61, 62], "everybodi": [31, 36], "everyon": [31, 36, 47, 62], "everyth": [31, 36, 56], "everywher": [31, 36], "evolut": 35, "evolv": [35, 71], "exactli": [1, 2, 71], "examin": [40, 62, 63], "exampl": [0, 10, 11, 15, 21, 24, 29, 31, 32, 34, 37, 42, 43, 48, 50, 51, 54, 56, 59, 60, 61, 62], "example_data": 1, "exce": 15, "except": 67, "exchang": [12, 35, 39, 40, 45, 55, 64], "exclud": [0, 41, 42], "exclus": [41, 42], "excus": 32, "exhibit": 35, "exist": [0, 1, 2, 55, 61, 62, 63, 64, 67], "expand": 49, "expect": [1, 37, 42, 47], "expected_valu": 47, "explain": [0, 29], "explan": [29, 43], "explor": [61, 62], "express": [5, 14, 30, 31, 32, 36, 38, 42, 64, 67], "extend": 1, "extens": [43, 44], "extent": [1, 4, 7, 12, 31, 34, 35, 37, 51, 55, 59, 61], "extern": 48, "extra": 51, "extract": [1, 17, 19, 28, 40, 50, 64], "extrem": [55, 56, 57], "face": [1, 51, 61], "facilit": [62, 71], "fact": [4, 35, 50, 54, 59], "factual": [17, 24, 50], "fail": [1, 61], "fals": [0, 1, 2, 31, 54, 61, 71], "famili": 42, "far": [34, 35, 46, 50, 62], "faster": 14, "feat_count": 19, "featuer": 2, "featur": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 63, 64, 65, 66, 67], "feature_build": [0, 1, 42, 61], "feature_dict": [1, 61], "feature_method": [64, 65], "feature_nam": [1, 61], "featurebuild": [0, 2, 42, 47, 69], "features_conceptu": [1, 61], "few": [48, 62], "fewer": [12, 60], "fflow": 11, "field": [13, 17], "file": [0, 2, 12, 14, 19, 42, 61, 65, 67], "filenam": [1, 2, 19], "filenotfounderror": 67, "fill": 71, "filler": [37, 60], "filler_paus": 49, "filter": [19, 62], "final": [1, 2, 34, 42, 62], "find": [1, 19, 28, 50], "fingertip": 62, "finit": 55, "first": [0, 1, 2, 11, 12, 16, 19, 31, 34, 35, 36, 39, 40, 41, 42, 45, 46, 49, 52, 54, 59, 61, 62, 64, 70, 71], "first_person": 12, "first_person_plur": 49, "first_person_raw": [12, 16], "first_person_singl": 49, "five": 37, "fix": [52, 67], "fix_abbrevi": 67, "flag": 71, "float": [2, 4, 5, 6, 8, 10, 13, 14, 16, 21, 24, 25, 28, 68], "floor": 59, "flow": [0, 1, 7, 31, 36, 39, 41, 45, 46, 61, 64], "focal": [31, 36], "focu": 41, "folder": [0, 1, 19], "follow": [1, 2, 16, 17, 29, 31, 32, 33, 41, 42, 47, 49, 50, 53, 55, 59, 60, 61, 64, 65], "for_m": 49, "for_you": 49, "forc": [0, 1, 61], "form": 1, "formal": [1, 61], "formal_titl": 49, "format": [1, 8, 17, 22, 42, 47, 48, 61, 62, 64, 67], "former": [45, 46], "formula": [33, 42, 59, 64, 70], "fornt": 1, "forward": [0, 1, 7, 39, 41, 61, 64], "forward_flow": 35, "found": [1, 5, 28, 30, 33, 61, 69], "four": [1, 8], "fourth": 33, "frac": 55, "fraction": 59, "framework": [49, 50, 62], "frequenc": [28, 31, 44, 64], "frequency_dict": 28, "fridai": 34, "from": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 19, 21, 28, 29, 31, 32, 33, 34, 35, 36, 39, 41, 42, 49, 50, 51, 53, 55, 56, 57, 58, 61, 62, 64, 65, 66, 67, 71], "full": [1, 2, 28, 37], "full_empirical_dataset": 1, "fulli": [32, 48], "functinon": 12, "function": [1, 2, 3, 4, 10, 11, 12, 13, 14, 16, 20, 21, 23, 28, 31, 39, 44, 45, 46, 50, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 69, 70, 71, 72, 73], "function_mimic_word": 28, "function_mimicry_scor": 28, "function_word_mimicri": 28, "function_word_refer": 28, "fund": 62, "further": [1, 2, 61, 71], "futur": [23, 66], "g": [0, 1, 4, 15, 20, 29, 31, 32, 36, 37, 38, 41, 42, 47, 48, 52, 54, 59, 61, 63, 65, 66, 67, 71], "game": [1, 2, 59, 71], "gaug": [33, 52], "gener": [0, 2, 9, 11, 12, 16, 21, 31, 34, 35, 36, 40, 42, 45, 46, 49, 51, 59, 67, 69, 71, 72], "generaliz": 23, "generate_bert": 67, "generate_certainty_pkl": 67, "generate_lexicon_pkl": 67, "generate_vect": 67, "gensim": 40, "get": [0, 16, 20, 21, 28, 30, 31, 36, 49, 66], "get_all_dd_featur": 11, "get_averag": 72, "get_centroid": 66, "get_certainti": 5, "get_certainty_scor": 64, "get_content_words_in_messag": 28, "get_conversation_level_aggreg": 65, "get_cosine_similar": 6, "get_dale_chall_easy_word": [21, 70], "get_dale_chall_score_and_classf": 64, "get_dd": 6, "get_dd_featur": 8, "get_dep_pair": [19, 49], "get_dep_pairs_noneg": [19, 49], "get_discursive_diversity_featur": 65, "get_first_pct_of_chat": 2, "get_first_person_word": [12, 70], "get_forward_flow": [7, 64], "get_function_word": 70, "get_function_words_in_messag": 28, "get_gini": 68, "get_gini_featur": 65, "get_info_divers": 13, "get_info_exchange_wordcount": 12, "get_liwc_count": 14, "get_max": 72, "get_mimicry_bert": 28, "get_min": 72, "get_moving_mimicri": 28, "get_named_ent": 64, "get_nan_vector": 27, "get_polarity_scor": 24, "get_politeness_strategi": 17, "get_politeness_v2": 18, "get_proportion_first_pronoun": 16, "get_question_word": 70, "get_reddit_featur": 64, "get_senti": 67, "get_stdev": 72, "get_subjectivity_scor": 24, "get_sum": 72, "get_team_bursti": 4, "get_temporal_featur": [4, 64], "get_time_diff": 23, "get_time_diff_startend": 23, "get_turn": 25, "get_turn_id": 71, "get_turn_taking_featur": 65, "get_unique_pairwise_combo": 6, "get_user_average_datafram": 72, "get_user_level_aggreg": 65, "get_user_level_averaged_featur": 66, "get_user_level_summary_statistics_featur": 66, "get_user_level_summed_featur": 66, "get_user_network": [11, 66], "get_user_sum_datafram": 72, "get_variance_in_dd": 26, "get_within_person_disc_rang": 27, "get_word_ttr": 16, "get_zscore_across_all_chat": 73, "get_zscore_across_all_convers": 73, "gina": 62, "gini": [39, 62, 65, 68], "gini_coeffici": [11, 69], "github": [0, 1, 2, 18, 67, 71], "give": [0, 1, 29, 37], "give_ag": 49, "given": [5, 6, 13, 14, 28, 30, 31, 33, 34, 35, 36, 40, 41, 55, 59, 66, 67, 71], "go": [1, 34, 35, 45, 46, 50, 62], "goal": 62, "goe": 67, "good": [50, 56, 62], "goodby": 49, "googl": [0, 1], "got": [31, 36], "gotta": [31, 36], "grade": 33, "grader": 21, "grai": 35, "grammat": 36, "granularli": 35, "grate": [42, 62], "gratitud": [17, 49, 50], "great": [47, 50, 51, 56, 59, 60, 62], "greater": 55, "greet": 50, "groceri": 41, "group": [0, 1, 2, 4, 13, 29, 33, 34, 41, 52, 59, 62, 68, 71, 72], "grouping_kei": [0, 1, 2, 71], "gt": 22, "guess": 10, "gun": 1, "gy": 15, "gym": 34, "ha": [0, 1, 2, 32, 34, 35, 37, 42, 43, 46, 52, 54, 55, 56, 59, 61, 62, 63, 67, 71], "had": [1, 31, 36, 54, 61], "hadn": [31, 36], "handl": [19, 29, 71], "happen": [1, 2, 55, 62, 63], "happi": 42, "hardcod": 67, "harder": 21, "hashedg": [17, 50], "hasn": [31, 36], "hasneg": 50, "hasposit": 50, "hate": 31, "have": [0, 1, 2, 10, 12, 16, 31, 34, 36, 37, 40, 41, 42, 45, 46, 50, 54, 59, 60, 61, 62, 71], "haven": [31, 36], "he": [1, 31, 36], "header": [18, 67], "hear": 32, "heart": [61, 62], "heat": 1, "heavi": 62, "hedg": [11, 30, 39, 49, 50, 64], "hei": [1, 35, 45, 46, 50], "helena": [47, 62], "hello": [0, 43, 49], "help": [0, 31, 34, 36, 43, 45, 46, 52, 58, 69], "helper": [23, 67], "her": [30, 31, 36], "here": [0, 1, 29, 31, 34, 41, 42, 47, 61, 66], "herself": [31, 36], "hesit": [60, 64], "hi": [31, 35, 36, 43, 45, 46], "hierach": 71, "hierarch": 71, "high": [0, 1, 2, 61, 62, 71], "higher": [21, 31, 34, 36, 40, 41, 42, 44, 45, 46, 55, 60], "highest": 71, "highlight": 1, "him": [31, 36], "himself": [31, 36], "hmm": [31, 36], "hoc": 62, "hold": 31, "hole": 62, "home": 42, "homework": 34, "homonym": 31, "hood": 1, "hope": 35, "host": [45, 46], "hour": 48, "how": [1, 5, 28, 29, 30, 31, 34, 35, 36, 39, 43, 45, 51, 52, 54, 56, 62], "howev": [0, 1, 3, 35, 40, 42, 44, 54, 56, 61, 62], "howitwork": 1, "html": [1, 15, 17, 24, 61], "http": [1, 2, 4, 5, 6, 12, 13, 15, 16, 17, 18, 21, 24, 41, 45, 46, 47, 61, 64, 67, 68, 70, 71], "hu": [1, 42, 62], "hug": [1, 51, 61], "huggingfac": 1, "huh": [31, 32, 36], "human": [37, 50, 62], "hyperlink": 48, "hyphen": [1, 61], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 19, 20, 21, 22, 23, 24, 25, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 71, 73], "iby1": 5, "id": [2, 4, 7, 23, 28, 62, 64, 66, 68, 71, 72, 73], "idea": [12, 35, 40, 47, 51], "ident": [34, 35], "identif": 1, "identifi": [0, 1, 2, 4, 8, 9, 15, 23, 25, 30, 31, 41, 47, 50, 52, 61, 63, 64, 71, 72], "identiif": [13, 71], "ignor": [1, 32], "illustr": [1, 41, 48, 62], "imagin": 1, "immedi": [31, 35, 64], "impact": [1, 60], "impersonal_pronoun": 49, "implement": 64, "impli": 37, "import": [31, 32, 36, 44, 45, 62, 69], "incent": 13, "includ": [0, 1, 2, 10, 17, 22, 31, 32, 35, 36, 42, 45, 46, 51, 52, 56, 61, 62, 66, 71], "inclus": [13, 71], "incongru": [8, 34], "incorpor": [1, 42, 45, 46], "increas": [1, 62], "incredibli": 42, "increment": 71, "independ": 1, "index": [1, 2, 4, 13, 25, 37, 39, 55, 61, 65], "indic": [1, 2, 16, 21, 22, 30, 32, 34, 35, 36, 40, 41, 43, 44, 48, 49, 50, 52, 55, 60, 63, 71], "indirect": 50, "indirect_btw": 50, "indirect_greet": 50, "indirectli": 69, "individu": [0, 1, 5, 11, 31, 34, 37, 45, 50, 59, 60, 62, 72], "inequ": 37, "infer": [1, 51, 67], "influenc": 1, "info": [13, 18, 64], "info_divers": 13, "info_exchang": 64, "info_exchange_wordcount": [41, 64], "info_exchange_zscor": 11, "inform": [0, 6, 11, 12, 13, 24, 32, 34, 39, 48, 62, 64, 65], "informal_titl": 49, "information_divers": 11, "initi": [2, 62, 63, 64, 65, 66], "input": [0, 2, 4, 6, 12, 13, 14, 15, 16, 19, 20, 22, 28, 42, 50, 55, 60, 62, 63, 64, 65, 66, 67, 71, 72], "input_column": [65, 66], "input_data": [25, 68, 72], "input_df": [1, 2, 42, 61, 71], "inquiri": [0, 30, 39, 52], "insid": 1, "insight": 1, "inspir": 15, "instal": [1, 61, 62], "instanc": [1, 22, 50, 59, 66], "instanti": 2, "insteac": 1, "instead": [1, 2, 62], "instruct": [1, 61], "int": [2, 3, 10, 13, 15, 16, 19, 20, 22, 28, 63, 64, 67], "intact": 71, "integ": [13, 40, 47], "intend": 59, "interact": [1, 11, 43, 44, 62, 69], "interconnect": 62, "interest": [1, 61, 62], "interfac": 62, "intermedi": [59, 64], "intern": 29, "interpret": [0, 23], "interrupt": 59, "interv": [58, 65], "introduc": [42, 62], "introduct": [11, 61], "invalid": 67, "invers": 64, "involv": [41, 62, 65], "io": [1, 24, 47, 61], "ipynb": [0, 1], "is_hedged_sentence_1": 10, "isn": [1, 31, 36], "issu": [1, 31, 36, 37, 42, 61], "ital": 64, "italic": 22, "item": [0, 71], "its": [0, 2, 15, 31, 35, 36, 40, 41, 47, 54, 55, 64, 69], "itself": [23, 31, 36, 44], "jami": [0, 42], "john": 1, "jonson": 62, "journal": [5, 64], "json": [1, 61], "jurafski": 70, "juri": 1, "juries_df": 1, "jury_conversations_with_outcome_var": 1, "jury_feature_build": 1, "jury_output": 1, "jury_output_chat_level": [1, 61], "jury_output_turn_level": 1, "just": [1, 2, 31, 36, 46, 50, 59, 61, 62], "katharina": 34, "keep": [1, 71], "kei": [1, 2, 4, 19, 28, 30, 54, 61, 71], "keyerror": 71, "keyword": [19, 49], "kind": [10, 62], "kitchen": 42, "knob": 0, "know": [1, 30], "knowledg": 29, "known": [1, 32, 61], "kumar": 62, "kw": 19, "l714": 67, "l81": 67, "lab": [1, 2, 62, 71], "label": [1, 15, 21, 51], "lack": [31, 38, 45, 46], "languag": [15, 31, 34, 42, 50, 62], "larg": [31, 69], "larger": [0, 31, 61], "last": [1, 31], "late": 32, "later": [0, 1, 2, 42, 61], "latest": [1, 61], "latter": [31, 36], "lda": [13, 40], "learn": [1, 61, 62], "least": [10, 32, 42, 63, 67], "led": 62, "legal": 49, "lemmat": [13, 40], "len": 28, "length": [35, 39, 41, 42, 44], "less": [13, 32, 50, 52, 55, 62, 63], "let": [41, 49, 53], "let_me_know": 49, "letter": [49, 71], "level": [0, 1, 2, 3, 4, 6, 7, 8, 9, 12, 13, 14, 16, 23, 61, 64, 65, 66, 71, 72], "lexic": [10, 12, 14, 16, 31, 32, 36, 42, 60, 62, 64], "lexical_featur": [14, 64], "lexical_features_v2": [10, 11], "lexicon": [0, 5, 10, 14, 30, 39, 50, 52, 67, 69], "lexicons_dict": 67, "librari": [34, 51, 56, 57], "lift": 62, "light": 61, "like": [1, 22, 31, 34, 36, 41, 50, 61, 62], "limiat": 32, "limit": [11, 32, 37, 42, 54], "line": [0, 1, 19, 22, 48, 61, 62, 64], "linear": 64, "linguist": [0, 18, 19, 30, 39, 50, 52], "link": [22, 29, 48, 50, 64], "list": [1, 2, 6, 7, 10, 11, 12, 13, 15, 19, 20, 21, 22, 28, 31, 33, 36, 37, 42, 48, 49, 50, 53, 54, 61, 64, 65, 66, 67, 68, 70, 71], "literatur": 62, "littl": 38, "littlehors": 1, "liu": [42, 52], "live": [1, 54], "liwc": [0, 2, 14, 30, 39, 51, 52, 56, 62, 64, 67], "liwc2015": 42, "liwc_featur": [10, 14], "liwc_test_output": 42, "lix": 34, "ll": [1, 31, 36, 61], "load": [19, 67, 69], "load_liwc_dict": 67, "load_saved_data": 19, "load_to_dict": 19, "load_to_list": 19, "loc": 15, "local": [1, 42, 51, 61], "locat": [1, 62], "long": 4, "longer": [30, 41, 43, 48, 61, 62], "look": [2, 34, 61, 65, 66], "loos": 36, "lot": [31, 36], "loud": 60, "love": [31, 56], "low": [1, 2, 29, 55, 60, 71], "lower": [21, 31, 33, 36, 41, 44, 55, 60], "lowercas": [2, 13, 40, 48, 49, 71], "lowest": 71, "lpearl": 16, "lst": 6, "m": [30, 31, 36], "made": [1, 23, 35, 59, 61, 62], "magnitud": 55, "mai": [1, 2, 11, 28, 31, 32, 35, 36, 37, 41, 42, 43, 44, 54, 61, 62, 71], "main": [1, 2, 5, 62, 64, 65, 66, 67], "make": [0, 1, 5, 31, 34, 55, 56, 62, 66, 69, 71], "man": 62, "mani": [1, 4, 11, 32, 37, 41, 60, 62, 66], "manner": [55, 62], "manual": [1, 61], "map": [13, 34, 67], "mark": [19, 20, 22, 43, 54, 64, 71], "marker": [18, 32, 39, 42, 50, 51, 52, 54, 56], "marlow": 44, "matarazzo": 62, "match": [1, 5, 16, 19, 30], "math": 34, "matter": [28, 47], "max": 66, "max_num_chunk": 63, "maxim": [34, 35, 37], "maximum": [63, 65, 72], "mayb": [38, 47], "mcfarland": 70, "me": [31, 32, 36, 41, 50, 53], "mean": [0, 1, 4, 6, 11, 13, 21, 29, 31, 34, 36, 40, 41, 42, 47, 55, 56, 58, 61, 62, 65, 66, 73], "meaning": [31, 41, 55], "meaningless": 41, "meant": 39, "measur": [0, 7, 12, 13, 20, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 51, 52, 54, 55, 56, 57, 58, 59, 60, 62, 64, 68], "mechan": 32, "medium": 21, "meet": 48, "member": [13, 34, 37, 55], "merg": [2, 8, 65, 66], "merge_conv_data_with_origin": 2, "messag": [0, 1, 2, 3, 4, 5, 8, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 28, 30, 31, 34, 35, 36, 37, 39, 41, 45, 46, 47, 48, 50, 51, 52, 55, 56, 57, 58, 61, 62, 63, 64, 65, 66, 67, 71, 73], "messaga": 61, "message_col": [0, 1, 2, 12, 13, 14, 61, 64, 65, 67, 71], "message_embed": [6, 7, 8], "message_lower_with_punc": 71, "metadata": [0, 1], "method": [5, 31, 41, 50, 62], "metric": [0, 1, 2, 8, 30, 34, 35, 46, 47, 48, 55, 66], "michael": 1, "mid": [1, 2, 71], "middl": [21, 34, 63], "might": [0, 1, 29, 43, 48, 53], "mikeyeoman": [18, 64], "mileston": 34, "mimic": [28, 31, 36, 45], "mimic_word": 28, "mimick": [28, 31, 64], "mimicri": [0, 1, 28, 31, 35, 36, 39, 61, 64], "mimicry_bert": [45, 46], "mind": [1, 35, 50], "mine": [31, 36, 53, 59], "minim": [0, 41, 60], "minimum": [65, 72], "minu": [12, 41, 64], "minut": [55, 58], "mirror": 1, "miss": [1, 32, 61, 71], "mitig": [31, 36], "mizil": 50, "mm": [31, 36], "mnsc": 6, "modal": 50, "mode": 60, "model": [1, 13, 15, 31, 34, 35, 36, 40, 45, 46, 47, 51, 62, 67], "modif": 35, "modifi": [1, 9, 19, 32, 64], "modul": [0, 1, 11, 34, 49, 61, 69], "monologu": 59, "more": [0, 1, 2, 11, 12, 22, 23, 24, 28, 31, 32, 34, 36, 37, 40, 41, 42, 43, 44, 45, 46, 50, 52, 55, 59, 61, 62, 71], "morn": 1, "most": [24, 31, 55, 62, 69], "motiv": 61, "move": [0, 1, 28, 31, 36, 39, 45, 59, 61], "movi": 31, "much": [1, 28, 31, 34, 35, 36, 45, 62], "multi": [1, 2, 71], "multidimension": [45, 46], "multipl": [0, 1, 2, 19, 62, 71], "must": [1, 6, 62, 71], "my": [30, 31, 35, 36, 45, 46, 50, 53], "my_chat_featur": 1, "my_feature_build": 61, "my_fil": 1, "my_output": 61, "my_output_chat_level": 61, "my_output_conv_level": 61, "my_output_user_level": 61, "my_pandas_datafram": 61, "myself": [31, 36, 53], "n": [35, 45, 46, 47, 57, 59, 60], "n_chat": 59, "na": [5, 33, 43, 44, 48, 49, 50, 53, 58], "naiv": [2, 20, 32, 34, 38, 39, 53, 56, 57, 64], "name": [0, 2, 4, 7, 8, 9, 12, 13, 14, 15, 17, 19, 23, 25, 28, 30, 32, 35, 39, 45, 46, 50, 51, 56, 63, 64, 66, 67, 68, 71, 72, 73], "name_to_train": 47, "named_ent": [15, 47], "named_entity_recognition_featur": 11, "nan": [0, 34], "nate": [35, 45, 46], "nathaniel": [35, 45, 46], "nativ": 50, "natur": [43, 55], "ndarrai": 68, "nearest": [13, 40], "nearli": 62, "necessari": [63, 67], "need": [0, 1, 2, 21, 62, 66, 67], "need_sent": 67, "need_senti": 67, "neg": [1, 24, 29, 31, 34, 35, 36, 42, 50, 51, 52, 54, 56, 61, 62, 67], "negat": [19, 49], "negative_bert": [1, 51, 61], "negative_emot": [49, 51, 52, 56], "negoti": 62, "neighborhood": 54, "neither": 30, "ner": 15, "ner_cutoff": [0, 1, 2, 47, 64], "ner_train": 64, "ner_training_df": [0, 1, 2, 47], "nest": [0, 1, 2, 22, 71], "net": [45, 46], "network": 11, "neutral": [1, 5, 24, 30, 51, 55, 61, 67], "neutral_bert": [1, 51, 61], "never": 1, "new": [1, 4, 13, 34, 61, 64, 65, 66, 72], "new_column_nam": 72, "next": [1, 32, 47, 58], "nice": [1, 50, 54, 61], "nicknam": 1, "niculescu": 50, "night": 31, "nikhil": [59, 62], "nltk": [1, 42, 61], "nobodi": [31, 36], "nois": 32, "non": [1, 2, 28, 31, 37, 48, 61, 62, 71], "none": [1, 2, 19, 23, 37, 55, 61, 64, 65, 66, 67], "nor": 30, "normal": [19, 28, 31], "notabl": 62, "note": [0, 1, 2, 12, 16, 20, 42, 61, 71], "notebook": [0, 1], "noth": [31, 36, 56], "noun": 1, "novel": [45, 46], "now": [0, 1, 2], "nowher": [31, 36], "np": 68, "ntri": 32, "null": 34, "num": 48, "num_char": 65, "num_chunk": [27, 63], "num_hedge_word": 10, "num_messag": 65, "num_named_ent": [15, 47], "num_row": 63, "num_top": 13, "num_word": [12, 16, 65], "number": [0, 3, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 25, 28, 31, 32, 34, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 54, 56, 58, 59, 60, 62, 63, 64, 66, 67, 69, 71, 72], "numer": [0, 1, 13, 33, 68, 72, 73], "numpi": [1, 61, 68], "o": 35, "object": [1, 2, 19, 44, 50, 57, 58, 61, 62, 64, 65, 66], "obtain": [0, 1, 13, 17, 23, 24, 34, 42, 61], "occur": [0, 4, 31, 42, 71], "occurr": 19, "off": [1, 31, 36], "offer": 0, "offici": [61, 67], "often": [28, 36, 47, 48, 62], "oh": [31, 36, 48], "okai": [31, 36], "older": [1, 61], "on_column": [18, 23, 28, 68, 72, 73], "onc": [1, 2, 11, 58, 61, 62], "one": [0, 1, 2, 4, 10, 12, 19, 23, 25, 28, 29, 31, 32, 36, 37, 47, 51, 56, 59, 61, 62, 67, 68, 71, 73], "ones": [31, 36], "onli": [0, 1, 2, 5, 11, 23, 29, 31, 32, 34, 36, 37, 45, 53, 58, 59, 61, 62, 71], "onlin": [1, 32, 39, 64], "onward": 0, "open": [0, 62, 66], "operation": [39, 50, 59], "opinion": [24, 31], "oppos": [2, 31, 34, 35, 55], "opposit": 34, "option": [1, 2, 37, 62, 63, 67, 71], "order": [0, 1, 35, 37, 42, 71], "org": [6, 15, 21, 24, 41, 70], "organ": 1, "origin": [1, 2, 5, 12, 21, 31, 32, 35, 36, 37, 45, 46, 49, 59], "orthogon": 34, "other": [0, 1, 9, 11, 28, 29, 30, 31, 32, 34, 35, 36, 37, 39, 40, 45, 46, 48, 51, 52, 54, 56, 58, 59, 61, 62, 64, 66, 71], "other_lexical_featur": [11, 64], "otherwis": [2, 10, 21, 23, 32, 38, 63, 67], "our": [0, 1, 2, 11, 13, 29, 31, 32, 36, 37, 39, 53, 59, 61, 71], "ourselv": 53, "out": [1, 2, 16, 19, 31, 36, 42, 55, 60, 62], "outcom": [1, 44, 62], "output": [0, 2, 10, 17, 19, 40, 61, 62, 64, 67], "output_file_bas": [0, 1, 2, 42, 61], "output_file_path_chat_level": [1, 2], "output_file_path_conv_level": [1, 2], "output_file_path_user_level": [1, 2], "output_path": 67, "outsid": [1, 2, 12], "over": [1, 16, 29, 31, 34, 35, 36, 37, 53, 55, 60, 62, 67, 71], "overal": [30, 31, 34, 36, 45, 46], "overrid": [0, 1, 2], "overview": [0, 61, 62], "overwritten": 1, "own": [0, 1, 2, 9, 35, 62, 64], "p": 55, "pacakg": 24, "pace": [43, 62], "packag": [17, 18, 40, 62], "pad": 19, "page": [1, 11, 29, 39, 61, 62, 69], "pair": [6, 19, 34, 49, 71], "pairwis": [6, 34], "panda": [0, 1, 2, 12, 14, 16, 23, 47, 64, 65, 66, 71, 72, 73], "paper": [4, 5, 12, 18, 29, 40, 50, 64], "paragraph": 22, "param": 71, "paramet": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 47, 61, 62, 63, 64, 65, 66, 67, 68, 71, 72, 73], "paramt": 1, "pardon": 32, "parenthes": [22, 48, 64], "parenthet": [22, 48], "pars": [16, 50, 60], "parser": 67, "part": [1, 10, 13, 29, 36, 42, 52, 67, 71], "particip": [1, 9, 37, 62], "particl": [31, 36], "particular": [11, 31, 32, 34, 41, 45, 47, 51, 59, 62], "particularli": 42, "partner": 32, "pass": [1, 13, 21, 47, 71], "path": [1, 2, 19, 61, 67], "path_in": 19, "pattern": [4, 11, 19, 55, 62, 67], "paus": 4, "pd": [1, 2, 4, 6, 7, 8, 9, 12, 13, 14, 15, 16, 18, 19, 23, 25, 63, 64, 65, 66, 67, 68, 71], "pdf": [5, 12, 13, 16, 18, 21, 24, 64, 70], "penalti": 1, "pennebak": [0, 12, 37, 41, 42, 52], "pennyslvania": 62, "peopl": [1, 32, 59, 62], "per": [1, 6, 9, 19, 42, 63, 66, 72], "percentag": [2, 21], "perfect": [37, 59], "perform": [0, 1, 2, 16, 50], "perhap": 1, "period": [4, 34, 55], "person": [1, 8, 12, 15, 16, 32, 34, 39, 41, 42, 50, 59, 62, 64, 70], "perspect": 1, "petrocelli": 5, "phrase": [19, 30, 38, 54], "phrase_split": 19, "pickl": [19, 67], "piec": [36, 42, 59, 63], "pl": 50, "place": [55, 61, 62], "plan": [34, 35, 45, 46], "player": 59, "pleas": [0, 1, 38, 49, 50, 61, 62], "please_start": 50, "point": [22, 24, 34, 35, 42, 45, 46, 48, 52, 64, 66], "poisson": 55, "polar": [24, 39, 51, 52, 64], "polit": [1, 17, 18, 30, 32, 38, 39, 42, 51, 52, 54, 56, 64], "politeness_featur": 11, "politeness_v2": 11, "politeness_v2_help": 11, "politenessstrategi": [17, 50], "portion": 0, "posit": [0, 1, 11, 15, 24, 29, 31, 39, 42, 50, 51, 54, 56, 61, 62, 64, 67], "positive_affect_lexical_per_100": [51, 52, 56], "positive_bert": [1, 51, 61], "positive_emot": [49, 51, 52, 56], "positivity_bert": [1, 61], "positivity_zscor": 64, "positivity_zscore_chat": 52, "positivity_zscore_convers": 52, "possess": 31, "possibl": [1, 34, 62, 66], "possibli": [38, 62], "practic": [34, 35], "pre": [1, 4, 21, 37, 49, 64], "preced": [31, 35, 71], "precend": 35, "precis": 47, "precomput": 51, "predefin": 19, "predetermin": [31, 36], "predict": [2, 47, 51, 64], "prefer": [0, 1], "preload_word_list": 69, "prep_simpl": 19, "prep_whol": 19, "preposit": [31, 36], "preproces": 48, "preprocess": [0, 1, 2, 13, 19, 40, 43, 49, 51, 61, 69], "preprocess_chat_data": 2, "preprocess_conversation_column": 71, "preprocess_naive_turn": 71, "preprocess_text": 71, "preprocess_text_lowercase_but_retain_punctu": 71, "presenc": [2, 32, 67], "present": [1, 2, 14, 30, 31, 38, 42, 55, 62, 71], "prespecifi": 19, "prevent": 51, "previou": [1, 7, 28, 31, 36, 45, 46, 58, 64, 71], "primari": 34, "print": 2, "prior": [2, 64, 71], "priya": [47, 62], "probabl": [15, 47], "problem": 62, "procedur": 62, "proceed": 46, "process": [0, 1, 2, 4, 10, 21, 37, 55, 62, 64, 65, 67, 69, 71], "prodi": 15, "produc": [2, 34], "product": 15, "professor": 62, "progress": [1, 2], "project": [54, 62], "pronoun": [12, 16, 31, 36, 39, 41, 42, 64, 70], "proper": 1, "properti": [1, 61], "proport": [16, 39, 42, 64], "propos": 37, "provid": [0, 1, 2, 15, 29, 30, 33, 36, 39, 44, 47, 54, 62], "proxi": 42, "pseudonym": 1, "psycholog": 42, "pub": 70, "publish": [5, 30, 64], "pubsonlin": 6, "punctuat": [0, 2, 16, 19, 20, 21, 28, 43, 54, 60, 67, 71], "punctuation_seper": 19, "puncut": 48, "pure": [24, 36], "purpos": 1, "put": [34, 50, 62, 66], "py": [0, 1, 14, 49, 61, 67], "pypi": [1, 61], "python": [1, 32, 41, 56, 57, 61, 62, 68], "qtd": 62, "qualiti": 41, "quantifi": [31, 36, 62], "quantiti": [37, 39, 41, 47], "quartil": 50, "question": [16, 19, 20, 29, 32, 39, 49, 50, 64, 66, 68, 70], "question_num": 11, "question_word": 20, "quick": [1, 43], "quickli": 0, "quit": 40, "quot": [22, 48, 64], "quotat": [22, 48], "rabbit": 62, "rain": 41, "rais": [67, 71], "random": 55, "rang": [5, 8, 24, 30, 33, 34, 35, 40, 51, 53, 55, 56, 57], "ranganath": [16, 31, 32, 36, 38, 43, 54, 70], "ranganath2013": 70, "ranganathetal2013_detectingflirt": 16, "rapid": [1, 4], "rare": [34, 35], "rate": [42, 51], "rather": [1, 31, 34, 35, 36, 37, 45, 46, 63], "ratio": [16, 39, 64], "raw": [0, 12, 16, 21, 31, 33, 42, 50, 64], "re": [1, 31, 36, 42, 50, 61], "reach": 42, "read": [0, 1, 2, 16, 21, 29, 33, 61, 62, 64, 65, 66, 67], "read_csv": 1, "read_in_lexicon": 67, "readabl": [11, 33, 64, 70], "reader": 33, "readi": 1, "readili": 62, "readthedoc": [1, 24, 61], "real": [1, 55], "realit": 13, "realli": [31, 36, 50], "reason": [31, 36, 45, 46, 49], "reassur": 49, "recal": 47, "recent": 0, "recept": [18, 32, 39, 42, 50, 51, 52, 54, 56, 62, 64], "recogn": [1, 43, 47], "recognit": [0, 1, 2, 39, 64], "recommend": [0, 42, 62], "reddit": [48, 64], "reddit_tag": 11, "redditus": 48, "reduc": 63, "reduce_chunk": 63, "redund": [42, 62], "refer": [0, 1, 11, 22, 24, 28, 31, 42, 48, 52, 61, 62, 64, 70], "reflect": [37, 43], "regardless": 1, "regener": [0, 2, 51, 67], "regenerate_vector": [0, 1, 2, 67], "regex": [14, 16, 49], "regist": 37, "regress": 1, "regular": [5, 14, 30, 32, 42, 55, 58, 67], "reichel": [53, 58, 60], "reidl": [4, 13], "reinvent": 62, "rel": [41, 51, 52, 55, 60, 64], "relat": [1, 61, 62, 64], "relationship": 36, "relev": [1, 29, 42, 44, 49, 51, 56, 61, 64, 65], "reli": [31, 34, 35, 36, 69], "reliabl": [33, 42], "remain": [1, 30, 71], "rememb": 1, "remov": [0, 2, 9, 13, 19, 28, 40, 43, 48, 49, 50, 71], "remove_active_us": 9, "renam": 1, "repair": [16, 39], "repeat": [60, 71], "repetit": 60, "replac": 19, "report": [1, 61], "repres": [2, 4, 6, 7, 11, 13, 23, 31, 34, 36, 42, 45, 46, 64, 66, 67, 68, 71, 72, 73], "represent": [34, 38], "reproduc": [36, 62], "republican": 1, "request": [32, 50, 51], "requir": [0, 1, 20, 21, 31, 55, 61, 62, 64, 65, 66, 67], "research": [1, 2, 62], "reserv": 0, "resolv": 62, "resourc": [1, 39, 48, 61, 62], "respect": [1, 2, 12, 31, 36, 37, 69], "respons": [22, 48, 55, 58, 64], "restaur": [34, 56], "restor": 0, "restrict": 71, "result": [40, 55, 65, 72], "retain": [2, 16, 20, 21, 60, 71], "retriev": 50, "retunr": 3, "return": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 30, 32, 43, 49, 50, 51, 55, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73], "reveal": 62, "revert": 50, "review": 62, "rewrit": 50, "rich": 62, "riedl": [13, 40, 55], "right": [31, 36, 61, 62], "roberta": [1, 39, 42, 52, 56, 61, 64, 67], "robust": 13, "rocklag": [5, 30, 64], "room": 59, "root": [13, 40], "rough": [12, 54], "roughli": 31, "round": [13, 40, 59, 71], "round_num": 1, "row": [0, 1, 2, 9, 13, 25, 37, 40, 59, 63, 68, 71, 72, 73], "rowbotham": 62, "rucker": 5, "rule": [1, 69], "run": [0, 10, 12, 16, 35, 46, 47, 48, 51, 61, 69], "runtim": [1, 35], "ryan": [0, 42], "ryanboyd": 67, "sagepub": [5, 64], "sai": [1, 32, 50, 59], "said": [1, 36, 62], "same": [0, 1, 2, 31, 34, 37, 45, 48, 52, 59, 60, 62, 71], "sampl": [61, 62], "sarcast": 48, "save": [0, 1, 2, 19, 64, 67], "save_featur": 2, "sbert": [1, 28, 31, 34, 35, 36, 45, 46, 64, 65, 67], "scale": [42, 51], "schema": 1, "scheme": 0, "school": [21, 62], "scienc": [29, 39, 62], "scientist": [61, 62], "score": [1, 4, 5, 11, 12, 13, 15, 21, 24, 28, 29, 30, 31, 34, 35, 36, 38, 39, 40, 45, 46, 47, 51, 53, 56, 57, 61, 64, 65, 67, 73], "script": [1, 61], "sea": 1, "seamless": 62, "search": [19, 61], "second": [0, 1, 4, 34, 42, 58, 59], "second_person": 49, "secr": [18, 49, 64], "section": [1, 29, 61], "see": [0, 1, 2, 30, 34, 38, 41, 45, 46, 47, 55, 62, 71], "seek": [5, 62], "seen": 67, "segment": [0, 19], "select": [2, 4, 23, 28, 36, 45, 64, 66, 67, 68, 71, 72, 73], "self": [1, 2, 61], "semant": [31, 34, 35, 41], "semantic_group": [1, 61], "send": [1, 37, 55], "sens": [5, 31, 54, 66], "sent": [1, 37, 64], "sentenc": [0, 1, 10, 15, 19, 20, 21, 33, 34, 35, 36, 42, 45, 46, 47, 48, 54, 56, 61, 67], "sentence_pad": 19, "sentence_split": 19, "sentence_to_train": 47, "sentencis": 19, "sentiment": [0, 1, 24, 31, 39, 42, 52, 56, 61, 62, 64, 67], "separ": [1, 2, 19, 34, 51, 67], "sepcifi": 1, "septemb": 40, "sequenc": [1, 59], "sequenti": 1, "seri": [12, 16, 23, 28, 42, 71, 73], "serv": 12, "set": [0, 1, 2, 13, 23, 34, 48, 59], "set_self_conv_data": 2, "sever": [1, 30, 41, 42, 48, 51, 56, 61], "shall": 54, "share": [31, 36, 37], "she": [30, 31, 36], "shift": 34, "shop": 62, "short": [55, 58], "shorter": [13, 40, 41, 42, 43], "should": [0, 1, 2, 4, 14, 23, 28, 29, 31, 36, 47, 48, 54, 61, 62, 64, 65, 66, 67, 68, 69, 71, 72, 73], "shouldn": [31, 36], "show": [1, 37, 61], "showeth": 62, "shruti": [35, 45, 46, 47, 62], "side": 31, "sign": 67, "signal": [45, 55], "signifi": 42, "signific": [1, 61], "silent": 37, "similar": [1, 6, 7, 13, 28, 29, 31, 34, 35, 36, 40, 45, 46, 49, 62, 65], "similarli": [1, 35], "simpl": [0, 1, 16, 19, 42, 61, 62], "simpli": [1, 5, 11, 28, 42, 56, 62], "simplifi": 1, "simplist": 41, "sinc": [1, 32, 41, 71], "singh": 62, "singl": [0, 1, 2, 11, 12, 19, 23, 31, 34, 35, 36, 37, 41, 45, 46, 59, 62, 71, 72], "singular": [12, 41, 64], "site": 16, "situat": 37, "size": [1, 13, 63, 67], "skip": 1, "slightli": [32, 62, 63], "slow": 1, "small": 40, "so": [1, 2, 10, 30, 31, 36, 37, 50, 61, 62, 66, 67], "social": [29, 39, 61, 62], "socsci": 16, "softwar": 62, "sohi": 62, "sol3": 4, "solut": 59, "solv": 62, "some": [0, 1, 11, 17, 29, 32, 34, 35, 37, 41, 61, 63], "somebodi": [31, 36], "someon": [22, 29, 31, 36, 47, 48, 61, 64], "someplac": [31, 36], "someth": 47, "sometim": 1, "somewhat": 35, "soon": 62, "sorri": [16, 32, 50], "sort": 10, "sound": [47, 51], "sourc": [4, 5, 6, 12, 13, 16, 17, 21, 34, 35, 50, 64, 68], "space": [34, 40, 71], "spaci": [1, 19, 47, 49, 50, 61], "span": 63, "spars": 32, "speak": [1, 31, 36, 37, 59, 60, 62], "speaker": [0, 1, 2, 6, 8, 9, 25, 31, 34, 35, 37, 38, 42, 45, 46, 61, 66, 71, 72], "speaker_id": [2, 61, 72], "speaker_id_col": [0, 1, 2, 6, 8, 9, 25, 26, 27, 61, 65, 66, 71, 72], "speaker_nicknam": [0, 1, 2, 6, 9, 59, 66, 71], "special": [0, 1, 2, 48, 71], "specif": [1, 2, 12, 32, 41, 48, 55, 61, 62, 69, 71], "specifi": [1, 2, 19, 47, 49, 67, 68, 71, 72, 73], "speciifc": 63, "spend": [51, 62], "spike": 55, "split": [19, 21, 43, 63], "spoke": 59, "spoken": [11, 37], "spread": 55, "squar": [13, 40], "src": 67, "ssrn": 4, "stabl": 40, "stack": 14, "stackoverflow": 68, "stage": [1, 2, 34, 71], "stamp": 55, "standard": [1, 4, 37, 40, 41, 42, 49, 55, 58, 60, 65, 72, 73], "stanford": 70, "start": [0, 15, 19, 20, 22, 23, 50], "statement": [1, 38, 42, 47, 48, 61, 62, 64], "statist": [65, 66, 68], "statologi": 41, "stem": 42, "step": [1, 4, 28, 41, 45, 46, 51], "still": [41, 45, 46], "stochast": 40, "stop": [40, 62], "stopword": [13, 19], "store": [1, 12, 16, 41, 49, 51, 61, 65, 67], "stoword": 42, "str": [2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 63, 64, 65, 66, 67, 68, 71, 72, 73], "straightforward": 29, "strategi": [17, 30, 32, 38, 39, 42, 49, 54, 64], "stream": 35, "strictli": 1, "string": [0, 1, 2, 4, 8, 12, 13, 14, 19, 23, 24, 50, 64, 66, 67, 68, 71, 72, 73], "strongli": [1, 41, 61], "structur": [0, 36, 49], "student": [21, 33], "studi": [1, 34, 62], "style": [1, 31, 36, 59], "sub": [0, 1, 71], "subfold": 1, "subject": [5, 24, 28, 39, 49, 64], "subjunct": 50, "sublist": 28, "submiss": 55, "subpart": [1, 71], "subsequ": [1, 30, 51, 58], "subset": 62, "substanc": 36, "substant": 31, "substanti": 1, "substr": 30, "subtask": 1, "subtract": [41, 58], "succe": 62, "success": [0, 1, 4, 31, 36, 43, 55, 58], "suggest": [1, 13, 34, 42, 44, 50], "suit": [62, 64], "sum": [1, 28, 34, 61, 64, 65, 66, 72], "summar": [0, 1, 65, 66, 69], "summari": [65, 66, 72], "summariz": [0, 65], "summarize_featur": 69, "suppl": 6, "support": [1, 15, 42, 61], "suppos": 1, "sure": 30, "swear": 49, "syntax": [1, 32, 61], "system": [2, 59, 64], "t": [0, 1, 2, 15, 29, 31, 36, 45, 49, 54, 61, 62, 67], "tabl": 62, "tag": 39, "take": [1, 4, 5, 9, 14, 25, 29, 31, 34, 37, 39, 42, 55, 61, 65, 71], "taken": [59, 71], "talk": [1, 37, 47, 59, 62], "tandem": [1, 61], "target": 15, "task": [1, 2, 59, 71], "tausczik": [12, 37, 41, 52], "tausczikpennebaker2013": 12, "team": [0, 1, 4, 11, 12, 13, 34, 39, 40, 42, 59, 65], "team_bursti": 4, "team_comm_tool": [1, 61], "teamcommtool": 1, "technic": [29, 39, 61, 62], "teghxgbqdhgaaaaa": 5, "tempor": [0, 2, 55, 58, 64, 71], "temporal_featur": 11, "tend": [1, 34, 60], "term": [1, 28, 59, 67], "termin": [1, 2, 61], "terribl": 51, "test": [13, 33, 47], "text": [0, 1, 2, 3, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 28, 32, 33, 36, 42, 48, 55, 62, 64, 67, 71], "text_based_featur": 64, "textblob": [24, 39, 51, 52, 64], "textblob_sentiment_analysi": 11, "than": [0, 1, 2, 11, 13, 31, 34, 35, 36, 37, 40, 41, 45, 46, 54, 60, 62, 63], "thee": 62, "thei": [0, 1, 28, 29, 31, 34, 36, 37, 39, 42, 47, 58, 59, 61, 62, 67], "them": [0, 1, 2, 19, 28, 29, 31, 36, 50, 51, 55, 59, 61, 62, 64, 65, 66, 67], "themselv": [31, 36, 60], "theoret": 35, "theori": [34, 50], "therebi": 0, "therefor": [0, 1, 11, 28, 37, 45, 59, 62, 69], "thi": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 16, 18, 20, 21, 23, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 71, 72, 73], "thing": [48, 61], "think": [1, 38, 47], "thorough": [43, 62], "those": [1, 21, 31, 36, 61], "though": [34, 42], "thought": [1, 35, 45], "thread": [1, 61], "three": [0, 1, 2, 22, 34, 37, 40, 51, 61, 62, 69, 71], "threshold": [15, 47], "through": [1, 45, 46, 50, 61, 62], "throughout": [31, 35, 36, 40, 45, 46, 55, 63], "tht": 35, "thu": [1, 2, 34, 35, 36, 37, 46, 55, 71], "time": [0, 1, 4, 23, 34, 35, 39, 42, 48, 51, 55, 59, 61, 62, 63, 64, 65, 66, 71], "time_diff": 55, "timediff": 4, "timestamp": [0, 1, 2, 8, 23, 58, 61, 62, 63, 64, 71], "timestamp_col": [0, 1, 2, 8, 61, 63, 64, 65, 71], "timestamp_end": [1, 23, 61, 64], "timestamp_start": [1, 23, 61, 64], "todai": [34, 35, 41, 43, 45, 46, 47], "todo": 66, "togeth": [0, 62, 66], "token": [16, 19, 39, 49, 54, 64, 67], "token_count": [19, 49], "too": [30, 31, 36, 62], "took": [1, 59], "tool": [1, 61, 62], "toolkit": [0, 1, 11, 42, 45, 46, 55, 62], "top": [1, 50, 59], "topic": [1, 13, 31, 34, 40, 42, 43, 65], "tormala": 5, "total": [1, 3, 12, 16, 25, 31, 34, 36, 37, 41, 44, 53, 59, 60, 61, 62, 63, 64, 66, 72], "touch": [1, 61], "toward": [31, 36, 38, 42, 45, 46], "tradit": 49, "train": [1, 2, 15, 64], "train_spacy_n": 15, "transcript": 0, "transfom": [45, 46], "transform": [31, 34, 35, 36, 51], "transform_utter": 50, "treat": [1, 59, 61], "tri": [50, 64], "trivial": [3, 44, 62], "troubl": [1, 61], "true": [0, 1, 2, 37, 61, 63, 67, 71], "truncat": 2, "truth_intensifi": 49, "ttr": 64, "tupl": [0, 1, 2, 15, 19, 64], "turn": [0, 2, 25, 28, 31, 32, 37, 39, 61, 64, 65, 71], "turn_count": 59, "turn_df": 71, "turn_id": 71, "turn_taking_featur": 11, "twice": 63, "twitter": [1, 51, 61], "two": [0, 1, 2, 23, 31, 34, 36, 41, 45, 46, 52, 62, 63, 67], "txt": 19, "type": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 37, 39, 52, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73], "typic": [1, 34, 40, 41, 42, 52, 60], "u": [1, 22, 31, 36, 48, 49, 58], "uci": 16, "uh": [31, 36], "ulrich": 55, "um": [31, 36, 60], "umbrella": [8, 29, 34], "uncertain": [5, 30], "uncertainti": 30, "under": [0, 1, 10, 11, 12, 28, 40], "underli": [1, 61], "underscor": [1, 61], "understand": [0, 33, 39, 43, 48, 58, 61, 62], "understood": 33, "uninterrupt": 59, "uniqu": [0, 1, 2, 6, 9, 13, 16, 23, 25, 41, 47, 52, 60, 61, 63, 71], "univers": 62, "unix": 58, "unless": [31, 36], "unpack": 62, "unpreprocess": [0, 2], "until": [31, 36, 45, 46], "unzip": [1, 61], "up": [1, 17, 21, 28, 31, 35, 36, 37, 42, 45, 46, 51, 59, 61, 67], "updat": [1, 9, 40, 54, 61], "upenn": 1, "upload": 13, "upon": 33, "us": [0, 1, 2, 3, 5, 11, 12, 13, 17, 19, 24, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 60, 62, 64, 65, 66, 67, 71], "usag": [21, 24], "use_time_if_poss": 63, "user": [0, 1, 2, 9, 14, 15, 22, 37, 42, 47, 48, 51, 61, 62, 63, 64, 65, 66, 69, 72], "user_data": [2, 65, 66], "user_df": 9, "user_level_featur": 2, "user_list": 9, "userlevelfeaturescalcul": [2, 66, 69], "usernam": [22, 48], "utf": 1, "util": [1, 12, 21, 61, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73], "utilti": 62, "utter": [0, 1, 2, 3, 4, 5, 13, 14, 15, 16, 17, 20, 21, 23, 24, 30, 31, 32, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 50, 51, 52, 54, 58, 60, 61, 67], "v": [0, 1, 2, 13, 61], "v0": 0, "valenc": 51, "valid": [23, 55], "valu": [1, 2, 5, 6, 10, 12, 13, 18, 19, 23, 28, 30, 31, 34, 36, 37, 40, 41, 42, 45, 46, 47, 55, 59, 61, 64, 68, 71, 72, 73], "vari": [13, 31, 34, 35], "variabl": [1, 56, 57, 64, 65, 66], "varianc": [8, 34], "variance_in_dd": 11, "variat": [4, 32], "varieti": [42, 62], "variou": [19, 42, 64, 65, 66], "vast": 62, "ve": [0, 31, 36, 50, 61], "vec": 6, "vect_data": [1, 7, 8, 28, 61, 64, 65, 66], "vect_path": 67, "vector": [0, 2, 6, 7, 8, 13, 28, 34, 35, 40, 55, 61, 64, 65, 67], "vector_data": [0, 1, 2, 61], "vector_directori": [0, 1, 2, 61, 65], "vein": 45, "verb": [19, 31, 36], "verbal": 32, "veri": [5, 28, 30, 31, 34, 35, 36, 42, 49, 54], "verifi": 2, "verit": 62, "version": [0, 1, 12, 14, 21, 28, 31, 40, 42, 51, 61], "versu": [4, 29, 47, 55, 59], "via": [3, 44], "view": 50, "visit": 41, "voila": 62, "w": 31, "wa": [0, 1, 2, 5, 12, 31, 32, 35, 36, 47, 51, 56, 59, 62, 71], "wai": [1, 2, 29, 30, 31, 32, 34, 49, 50, 54, 56, 57, 61, 62, 66], "waiai": 62, "wait": [4, 55], "walk": 1, "walkthrough": [0, 61, 62], "want": [1, 28, 34, 59, 61, 62, 67], "warn": 50, "watt": [1, 2, 62, 71], "we": [0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 15, 16, 18, 23, 24, 28, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 56, 57, 58, 59, 61, 62, 66, 67, 71], "web": 70, "websit": [1, 61], "week": 47, "weight": 66, "weigt": 31, "welcom": 61, "well": [29, 31, 36, 55, 62], "went": 41, "were": [1, 12, 31, 36, 42], "western": 1, "wh": [19, 31, 36], "wh_question": [32, 49, 54], "wharton": 62, "what": [1, 2, 12, 16, 20, 29, 31, 32, 34, 35, 36, 39, 41, 45, 46, 47, 50, 54, 62, 63], "whatev": [1, 31, 36], "wheel": 62, "when": [1, 16, 20, 31, 33, 36, 47, 54, 55, 59, 60, 61, 62, 69, 71], "whenev": 71, "where": [0, 1, 2, 19, 20, 28, 31, 32, 36, 37, 40, 41, 42, 48, 50, 51, 54, 59, 61, 65, 68, 73], "wherea": [31, 34, 35, 36, 43], "wherev": [31, 36], "whether": [1, 2, 10, 16, 19, 32, 37, 38, 41, 43, 47, 57, 58, 62, 63, 64, 67, 71], "which": [0, 1, 2, 3, 4, 5, 7, 9, 12, 13, 15, 16, 18, 23, 25, 28, 31, 34, 35, 36, 37, 38, 40, 41, 42, 51, 53, 54, 55, 56, 57, 58, 59, 61, 62, 64, 66, 67, 68, 69, 71, 72, 73], "while": [31, 32, 34, 36, 37, 44, 45, 46, 55, 62, 71], "whitespac": 43, "who": [20, 31, 32, 36, 47, 51, 54, 59, 60, 62], "whole": [28, 59, 62, 71], "whom": [31, 36, 54], "whose": [31, 36, 54], "why": [20, 29, 31, 36, 54], "wide": 31, "wien": 62, "wiki": [21, 29, 70], "wiki_link": [1, 61], "wikipedia": [21, 33, 37, 70], "williamson": 60, "wish": [1, 2, 18, 28], "within": [0, 1, 2, 8, 11, 16, 28, 30, 31, 34, 35, 36, 41, 45, 46, 52, 55, 59, 60, 62, 63, 64, 68, 71, 73], "within_group": 2, "within_person_discursive_rang": 11, "within_task": [0, 1, 2, 71], "without": [1, 19, 31, 36, 42, 47, 54, 62, 69], "won": [0, 31, 36, 45], "wonder": 56, "woolei": 4, "woollei": [13, 40, 55], "wooten": 55, "word": [0, 3, 10, 11, 12, 13, 14, 16, 19, 20, 21, 22, 28, 30, 32, 33, 37, 38, 39, 40, 41, 43, 45, 46, 48, 49, 52, 53, 54, 56, 57, 62, 64, 65, 66, 67, 69, 70], "word_mimicri": 11, "word_start": [19, 49], "wordcount": 42, "wordnet": [1, 61], "words_in_lin": 19, "work": [0, 47, 50, 55, 61, 62], "world": 55, "worri": 62, "would": [1, 29, 31, 34, 35, 36, 37, 42, 50, 54, 62], "wouldn": [31, 36], "wow": 50, "wp": 13, "write": [2, 29, 60], "www": [12, 13, 18, 41, 64], "x": [0, 1, 2, 4, 46, 68], "xinlan": 62, "yashveer": 62, "ye": 19, "yeah": [31, 36], "yeoman": [18, 49], "yesno_quest": [32, 49, 54], "yet": 48, "ylatau": 12, "you": [0, 1, 2, 11, 24, 29, 31, 36, 37, 42, 43, 47, 50, 59, 61, 62, 69], "your": [0, 29, 31, 32, 36, 37, 50, 59, 61, 62], "your_data": 42, "yourself": [31, 36, 50], "yuluan": 62, "yup": [31, 36], "yuxuan": 62, "z": [12, 39, 49, 51, 64, 73], "zero": [13, 52], "zhang": 62, "zheng": 62, "zhong": 62, "zhou": 62, "zscore": 41, "zscore_chat": 41, "zscore_chats_and_convers": 69, "zscore_convers": 41, "\u00bc": 47, "\u03c4": 55}, "titles": ["The Basics", "Worked Example", "feature_builder module", "basic_features module", "burstiness module", "certainty module", "discursive_diversity module", "fflow module", "get_all_DD_features module", "get_user_network module", "hedge module", "Features: Technical Documentation", "info_exchange_zscore module", "information_diversity module", "lexical_features_v2 module", "named_entity_recognition_features module", "other_lexical_features module", "politeness_features module", "politeness_v2 module", "politeness_v2_helper module", "question_num module", "readability module", "reddit_tags module", "temporal_features module", "textblob_sentiment_analysis module", "turn_taking_features module", "variance_in_DD module", "within_person_discursive_range module", "word_mimicry module", "FEATURE NAME", "Certainty", "Content Word Accommodation", "Conversational Repair", "Dale-Chall Score", "Discursive Diversity", "Forward Flow", "Function Word Accommodation", "Gini Coefficient", "Hedge", "Features: Conceptual Documentation", "Information Diversity", "Information Exchange", "Linguistic Inquiry and Word Count (LIWC) and Other Lexicons", "Message Length", "Message Quantity", "Mimicry (BERT)", "Moving Mimicry", "Named Entity Recognition", "Online Discussion Tags", "Politeness/Receptiveness Markers", "Politeness Strategies", "Sentiment (RoBERTa)", "Positivity Z-Score", "Proportion of First Person Pronouns", "Question (Naive)", "Team Burstiness", "Textblob Polarity", "Textblob Subjectivity", "Time Difference", "Turn Taking Index", "Word Type-Token Ratio", "The Team Communication Toolkit", "Introduction", "assign_chunk_nums module", "calculate_chat_level_features module", "calculate_conversation_level_features module", "calculate_user_level_features module", "check_embeddings module", "gini_coefficient module", "Utilities", "preload_word_lists module", "preprocess module", "summarize_features module", "zscore_chats_and_conversation module"], "titleterms": {"0": 42, "1": 42, "5": 42, "A": 0, "One": 0, "The": [0, 61, 62], "accommod": [31, 36], "addit": 1, "advanc": 1, "assign_chunk_num": 63, "assumpt": 0, "basic": [0, 1, 29, 30, 31, 33, 34, 35, 36, 37, 38, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 55, 56, 57, 58, 59, 60], "basic_featur": 3, "bert": 45, "bring": 42, "bursti": [4, 55], "calculate_chat_level_featur": 64, "calculate_conversation_level_featur": 65, "calculate_user_level_featur": 66, "caveat": [29, 30, 31, 33, 34, 35, 36, 38, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 55, 56, 57, 58, 59], "certainti": [5, 30], "chall": 33, "chat": [11, 39], "check_embed": 67, "citat": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "class": 69, "code": [0, 1], "coeffici": 37, "column": [1, 61], "commun": 61, "conceptu": 39, "configur": 1, "consider": 1, "content": [31, 61], "convers": [1, 11, 32, 39, 62, 69], "count": [42, 59], "custom": 42, "customiz": 0, "dale": 33, "data": 1, "declar": 61, "demo": [0, 1], "detail": 1, "differ": 58, "directori": 1, "discurs": 34, "discursive_divers": 6, "discuss": 48, "divers": [34, 40], "document": [11, 39, 62], "driver": 69, "entiti": 47, "environ": [1, 61], "exampl": [1, 41, 47], "exchang": 41, "featur": [1, 11, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 69], "feature_build": 2, "featurebuild": [1, 61, 62], "fflow": 7, "file": [1, 30, 34, 35, 45, 46, 47, 51], "first": 53, "flow": 35, "forward": 35, "function": [0, 36], "gener": [1, 61, 62], "get": [1, 61, 62], "get_all_dd_featur": 8, "get_user_network": 9, "gini": 37, "gini_coeffici": 68, "hedg": [10, 38], "high": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "implement": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "import": [1, 61], "index": 59, "indic": 61, "info_exchange_zscor": 12, "inform": [1, 40, 41, 61], "information_divers": 13, "input": [1, 34], "inquiri": 42, "inspect": [1, 61], "interpret": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "introduct": 62, "intuit": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "kei": 0, "length": 43, "level": [11, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 69], "lexical_features_v2": 14, "lexicon": 42, "light": 0, "linguist": 42, "liwc": 42, "marker": 49, "messag": [43, 44], "mimicri": [45, 46], "modul": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73], "motiv": 62, "move": 46, "naiv": 54, "name": [1, 29, 47, 61], "named_entity_recognition_featur": 15, "new": 42, "note": [29, 30, 31, 33, 34, 35, 36, 38, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 55, 56, 57, 58, 59], "onlin": 48, "other": [42, 69], "other_lexical_featur": 16, "ouput": 34, "our": 62, "output": [1, 30, 35, 45, 46, 47, 51], "own": 42, "packag": [0, 1, 61], "paramet": [0, 1], "person": 53, "pip": [1, 61], "polar": 56, "polit": [49, 50], "politeness_featur": 17, "politeness_v2": 18, "politeness_v2_help": 19, "posit": 52, "preload_word_list": 70, "preprocess": 71, "pronoun": 53, "proport": 53, "quantiti": 44, "question": 54, "question_num": 20, "ratio": 60, "readabl": 21, "recept": 49, "recognit": 47, "recommend": [1, 61], "reddit_tag": 22, "relat": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "repair": 32, "roberta": 51, "run": 1, "sampl": [0, 1], "score": [33, 41, 52], "sentiment": 51, "speaker": [11, 59, 62, 69], "start": [1, 61, 62], "strategi": 50, "subject": 57, "summarize_featur": 72, "tabl": 61, "tag": 48, "take": 59, "team": [55, 61, 62], "technic": 11, "temporal_featur": 23, "textblob": [56, 57], "textblob_sentiment_analysi": 24, "time": 58, "token": 60, "toolkit": 61, "touch": 0, "train": 47, "troubleshoot": [1, 61], "turn": [1, 59], "turn_taking_featur": 25, "type": 60, "us": 61, "user": 11, "util": 69, "utter": [11, 39, 62, 69], "v": 42, "variance_in_dd": 26, "vector": 1, "virtual": [1, 61], "walkthrough": 1, "within_person_discursive_rang": 27, "word": [31, 36, 42, 60], "word_mimicri": 28, "work": 1, "your": [1, 42], "z": [41, 52], "zscore_chats_and_convers": 73}}) \ No newline at end of file diff --git a/docs/build/html/utils/calculate_chat_level_features.html b/docs/build/html/utils/calculate_chat_level_features.html index 893448e2..984730f2 100644 --- a/docs/build/html/utils/calculate_chat_level_features.html +++ b/docs/build/html/utils/calculate_chat_level_features.html @@ -96,7 +96,7 @@

      calculate_chat_level_features module

      -class utils.calculate_chat_level_features.ChatLevelFeaturesCalculator(chat_data: DataFrame, vect_data: DataFrame, bert_sentiment_data: DataFrame, ner_training: DataFrame, ner_cutoff: int, conversation_id_col: str, message_col: str, timestamp_col: str | tuple[str, str])
      +class utils.calculate_chat_level_features.ChatLevelFeaturesCalculator(chat_data: DataFrame, vect_data: DataFrame, bert_sentiment_data: DataFrame, ner_training: DataFrame, ner_cutoff: int, conversation_id_col: str, message_col: str, timestamp_col: str | tuple[str, str], custom_liwc_dictionary: dict)

      Bases: object

      Initialize variables and objects used by the ChatLevelFeaturesCalculator class.

      This class uses various feature modules to define chat-level features. It reads input data and @@ -107,8 +107,12 @@

    • chat_data (pd.DataFrame) – Pandas dataframe of chat-level features read from the input dataset

    • vect_data (pd.DataFrame) – Pandas dataframe containing vector data

    • bert_sentiment_data (pd.DataFrame) – Pandas dataframe containing BERT sentiment data

    • -
    • ner_training_df (pd.DataFrame) – This is a pandas dataframe of training data for named entity recognition feature

    • +
    • ner_training (pd.DataFrame) – This is a pandas dataframe of training data for named entity recognition feature

    • ner_cutoff (int) – This is the cutoff value for the confidence of prediction for each named entity

    • +
    • conversation_id_col (str) – A string representing the column name that should be selected as the conversation ID. Defaults to “conversation_num”.

    • +
    • message_col (str) – A string representing the column name that should be selected as the message. Defaults to “message”.

    • +
    • timestamp_col (str) – A string representing the column name that should be selected as the message. Defaults to “timestamp”.

    • +
    • custom_liwc_dictionary (dict) – This is the user’s own LIWC dictionary. Defaults to empty dictionary.

    diff --git a/docs/build/html/utils/check_embeddings.html b/docs/build/html/utils/check_embeddings.html index ba19ea73..77cfe13b 100644 --- a/docs/build/html/utils/check_embeddings.html +++ b/docs/build/html/utils/check_embeddings.html @@ -61,11 +61,13 @@
  • assign_chunk_nums module
  • check_embeddings module
  • @@ -105,7 +107,7 @@

    check_embeddings module

    -utils.check_embeddings.check_embeddings(chat_data, vect_path, bert_path, need_sentence, need_sentiment, regenerate_vectors, message_col='message')
    +utils.check_embeddings.check_embeddings(chat_data: DataFrame, vect_path: str, bert_path: str, need_sentence: bool, need_sentiment: bool, regenerate_vectors: bool, message_col: str = 'message')

    Check if embeddings and required lexicons exist, and generate them if they don’t.

    This function ensures the necessary vector and BERT embeddings are available. It also checks for the presence of certainty and lexicon files, generating them if needed.

    @@ -130,6 +132,27 @@
    +
    +
    +utils.check_embeddings.fix_abbreviations(dicTerm: str) str
    +

    Helper function to fix abbreviations with punctuations. +src: https://github.com/ryanboyd/ContentCoder-Py/blob/main/ContentCodingDictionary.py#L714

    +

    This function goes over a list of hardcoded exceptions for the tokenizer / sentence parser +built into LIWC so that it doesn’t convert them into separate strings +(e.g., we want “i.e.” to not be seen as two words and two sentences [i, e]).

    +
    +
    Parameters:
    +

    dicTerm (str) – The lexicon term

    +
    +
    Returns:
    +

    dicTerm

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +
    utils.check_embeddings.generate_bert(chat_data, output_path, message_col, batch_size=64)
    @@ -240,6 +263,28 @@
    +
    +
    +utils.check_embeddings.load_liwc_dict(dicText: str) dict
    +

    Loads up a dictionary that is in the LIWC 2007/2015 format. +src: https://github.com/ryanboyd/ContentCoder-Py/blob/main/ContentCodingDictionary.py#L81

    +

    This functions reads the content of a LIWC dictionary file in the official format, +and convert it to a dictionary with lexicon: regular expression format. +We assume the dicText has two parts: the header, which maps numbers to “category names,” +and the body, which maps words in the lexicon to different category numbers, separated by a ‘%’ sign.

    +
    +
    Parameters:
    +

    dicText (str) – The content of a .dic file

    +
    +
    Returns:
    +

    dicCategories

    +
    +
    Return type:
    +

    dict

    +
    +
    +
    +
    utils.check_embeddings.read_in_lexicons(directory, lexicons_dict)
    diff --git a/docs/source/basics.rst b/docs/source/basics.rst index 87221375..9d7b7c4c 100644 --- a/docs/source/basics.rst +++ b/docs/source/basics.rst @@ -85,4 +85,6 @@ Here are some parameters that can be customized. For more details, refer to the 5. **regenerate_vectors**: Force-regenerate vector data even if it already exists. -6. **compute_vectors_from_preprocessed**: Computes vectors using preprocessed text (that is, with capitalization and punctuation removed). This was the default behavior for v.0.1.3 and earlier, but we now default to computing metrics on the unpreprocessed text (which INCLUDES capitalization and punctuation), and this parameter now defaults to False. \ No newline at end of file +6. **compute_vectors_from_preprocessed**: Computes vectors using preprocessed text (that is, with capitalization and punctuation removed). This was the default behavior for v.0.1.3 and earlier, but we now default to computing metrics on the unpreprocessed text (which INCLUDES capitalization and punctuation), and this parameter now defaults to False. + +7. **custom_liwc_dictionary_path**: Allows the user to "bring their own" LIWC dictionary, and thereby access more recent versions of the LIWC features. Our default version of LIWC is 2007, but users can obtain more recent versions of the lexicon by contacting `Ryan Boyd `_ and `Jamie Pennebaker `_. For more information on using the custom LIWC dictionary, please see :ref:`liwc`. \ No newline at end of file diff --git a/docs/source/features_conceptual/liwc.rst b/docs/source/features_conceptual/liwc.rst index 399cd743..2c0632f9 100644 --- a/docs/source/features_conceptual/liwc.rst +++ b/docs/source/features_conceptual/liwc.rst @@ -31,15 +31,34 @@ For each word in the LIWC lexicon, we use a regular expression to count the numb Rate of word use per 100 words = (count / utterance length) * (utterance length / 100) - **In v.1.0.4 and later:** - Lexical values are represented as a **raw count** of the number of times they appear in the utteranc + Lexical values are represented as a **raw count** of the number of times they appear in the utterance. + +New in v.1.0.5: "Bring Your Own LIWC" Custom Lexicon +****************************************************** + +v.1.0.5 introduces a new feature, **"Bring Your Own LIWC"**. We are incredibly grateful to `Ryan Boyd `_ and `Jamie Pennebaker `_ for their close support in creating this feature. + +The Team Communication Toolkit's built-in version of LIWC is the 2007 version of the lexicon. However, academic users can reach out to Ryan and Jamie for a more up-to-date version of the lexicon. The lexicon is formatted in a standard `.dic` file format. + +If you have your own local copy of the LIWC lexicon, you can use the Team Communication Toolkit to generate category wordcounts for your "custom" dictionary. We expect the format to be the LIWC standard format from Boyd and Pennebaker. + +To use "Bring Your Own LIWC," simply point the **custom_liwc_dictionary_path** in your FeatureBuilder to a local copy of the lexicon: + +.. code-block:: python + + feature_builder = FeatureBuilder( + input_df = your_data, # This is your input dataframe + output_file_base = "liwc_test_output", + custom_liwc_dictionary_path = "./LIWC2015.Dictionary.English.2024.08.27.95450.dic" # Obtain this file from Ryan and Jamie + ) + feature_builder.featurize() + Interpreting the Feature ************************* In general, the higher the value, the more that an utterance displays the concept "represented" by the lexicon. For example, a high value of the Home lexicon suggests that a speaker is discussing topics related to the home. -The scaled value is lower-bounded at 0 (if no words from the lexicon appear) and has no upper bound, as the value increases with the length of the utterance; for example, in a hypothetical utterance that is 1,000 words long, if all 1,000 words belong to a lexicon, the rate per 100 words would be (1000/1000 * 1000/100 = 10). - -We note, however, that in general, the lexicon-based approach to measuring concepts has several limitations. **Lexicons use a bag-of-words-based approach**, which means that it does not take the ordering of words or the context into account. This can be particularly signifiant for issues such as positive language; the sentence "I am not happy" contains the word "happy," which would count towards the positive lexicon --- even though the statement is negative! +We note, however, that the lexicon-based approach to measuring concepts has several limitations. **Lexicons use a bag-of-words-based approach**, which means that it does not take the ordering of words or the context into account. This can be particularly signifiant for issues such as positive language; the sentence "I am not happy" contains the word "happy," which would count towards the positive lexicon --- even though the statement is negative! Finally, **LIWC typically recommends having an utterance of at least 100 words**, as measures for shorter pieces of text may not be reliable. diff --git a/src/team_comm_tools/feature_builder.py b/src/team_comm_tools/feature_builder.py index 543c2c0a..6f370d1d 100644 --- a/src/team_comm_tools/feature_builder.py +++ b/src/team_comm_tools/feature_builder.py @@ -522,6 +522,7 @@ def featurize(self) -> None: print("All Done!") # Store column names of what we generated, so that the user can easily access them + # TODO --- this needs to be updated if the user brings their own LIWC, because the custom LIWC features are not in `self.chat_features`. self.chat_features = list(itertools.chain(*[feature_dict[feature]["columns"] for feature in self.feature_names if feature_dict[feature]["level"] == "Chat"])) self.conv_features_base = list(itertools.chain(*[feature_dict[feature]["columns"] for feature in self.feature_names if feature_dict[feature]["level"] == "Conversation"])) self.conv_features_all = [col for col in self.conv_data if col not in self.orig_data and col != 'conversation_num'] diff --git a/src/team_comm_tools/features/lexical_features_v2.py b/src/team_comm_tools/features/lexical_features_v2.py index 76b3330e..176eb306 100644 --- a/src/team_comm_tools/features/lexical_features_v2.py +++ b/src/team_comm_tools/features/lexical_features_v2.py @@ -48,13 +48,10 @@ def liwc_features(chat_df: pd.DataFrame, message_col: str, custom_liwc_dictionar lexicons_dict = pickle.load(lexicons_pickle_file) # Return the lexical features stacked as columns - # return pd.concat( - # Finding the # of occurrences of lexicons of each type for all the messages. df_lst = [pd.DataFrame(chat_df[message_col + "_original"].apply(lambda chat: get_liwc_count(regex, chat)))\ .rename({message_col + "_original": lexicon_type + "_lexical_wordcount"}, axis=1)\ for lexicon_type, regex in lexicons_dict.items()] - # , axis=1 - # ) + if custom_liwc_dictionary: df_lst += [pd.DataFrame(chat_df[message_col + "_original"].apply(lambda chat: get_liwc_count(regex, chat)))\ .rename({message_col + "_original": lexicon_type + "_lexical_wordcount_custom"}, axis=1)\ From 4909be0e708eac82d8f7097785f8a01d0ddd45f0 Mon Sep 17 00:00:00 2001 From: sundy1994 Date: Tue, 29 Oct 2024 16:18:02 -0700 Subject: [PATCH 6/7] update regex for emojis, add liwc loading checks, add columns for custom dict --- src/team_comm_tools/feature_builder.py | 4 ++ src/team_comm_tools/utils/check_embeddings.py | 39 +++++++++++++++++-- src/team_comm_tools/utils/preprocess.py | 21 +++++++++- 3 files changed, 59 insertions(+), 5 deletions(-) diff --git a/src/team_comm_tools/feature_builder.py b/src/team_comm_tools/feature_builder.py index 6f370d1d..f5e497d2 100644 --- a/src/team_comm_tools/feature_builder.py +++ b/src/team_comm_tools/feature_builder.py @@ -220,6 +220,8 @@ def __init__( # drop all columns that are in our generated feature set --- we don't want to create confusion! chat_features = list(itertools.chain(*[self.feature_dict[feature]["columns"] for feature in self.feature_dict.keys() if self.feature_dict[feature]["level"] == "Chat"])) + if self.custom_liwc_dictionary: + chat_features += [lexicon_type + "_lexical_wordcount_custom" for lexicon_type in self.custom_liwc_dictionary.keys()] columns_to_drop = [col for col in chat_features if col in self.chat_data.columns] self.chat_data = self.chat_data.drop(columns=columns_to_drop) self.orig_data = self.orig_data.drop(columns=columns_to_drop) @@ -524,6 +526,8 @@ def featurize(self) -> None: # Store column names of what we generated, so that the user can easily access them # TODO --- this needs to be updated if the user brings their own LIWC, because the custom LIWC features are not in `self.chat_features`. self.chat_features = list(itertools.chain(*[feature_dict[feature]["columns"] for feature in self.feature_names if feature_dict[feature]["level"] == "Chat"])) + if self.custom_liwc_dictionary: + self.chat_features += [lexicon_type + "_lexical_wordcount_custom" for lexicon_type in self.custom_liwc_dictionary.keys()] self.conv_features_base = list(itertools.chain(*[feature_dict[feature]["columns"] for feature in self.feature_names if feature_dict[feature]["level"] == "Conversation"])) self.conv_features_all = [col for col in self.conv_data if col not in self.orig_data and col != 'conversation_num'] diff --git a/src/team_comm_tools/utils/check_embeddings.py b/src/team_comm_tools/utils/check_embeddings.py index cb54875d..95b836d8 100644 --- a/src/team_comm_tools/utils/check_embeddings.py +++ b/src/team_comm_tools/utils/check_embeddings.py @@ -3,7 +3,7 @@ import re import os import pickle - +import warnings from tqdm import tqdm from pathlib import Path @@ -176,6 +176,36 @@ def fix_abbreviations(dicTerm: str) -> str: else: return dicTerm +def is_valid_term(dicTerm): + """ + Check if a dictionary term is valid. + + This functions returns True if the term matches the regex pattern and Flase otherwise. + The regex pattern matches: + - Alphanumeric characters (a-zA-Z0-9) + - Valid symbols: -, ', *, / + - The * symbol can only appear once at the end of a word + - Emojis are valid only when they appear alone + - The / symbol can only appear once after alphanumeric characters + - Spaces are allowed between valid words + + :param dicTerm: The dictionary term + :type dicTerm: str + + :return: True/False + :rtype: bool + """ + # List of emojis to preserve + emojis_to_preserve = { + "(:", "(;", "):", "/:", ":(", ":)", ":/", ";)" + } + emoji_pattern = '|'.join(re.escape(emoji) for emoji in emojis_to_preserve) + alphanumeric_pattern = ( + fr"^([a-zA-Z0-9\-']+(\*|\/[a-zA-Z0-9\*]*)?|({emoji_pattern})\*?)( [a-zA-Z0-9\-']+(\*|\/[a-zA-Z0-9\*]*)?)*$" + ) + + return bool(re.match(alphanumeric_pattern, dicTerm)) + def load_liwc_dict(dicText: str) -> dict: """ Loads up a dictionary that is in the LIWC 2007/2015 format. @@ -210,14 +240,17 @@ def load_liwc_dict(dicText: str) -> dict: dicTerm = dicTerm.strip() if dicTerm == '': continue - + if not is_valid_term(dicTerm): + warnings.warn(f"WARNING: invalid dict term: {dicTerm}, skipped") if '*' in dicTerm: # Replace consecutive asterisks with a single asterisk -- e.g., '**'->'*' pattern = re.compile(r'\*+') dicTerm = pattern.sub('*', dicTerm) dicTerm = r"\b" + dicTerm.replace("\n", "").replace("*", "") + r"\S*\b" + elif '(' in dicTerm or ')' in dicTerm or '/' in dicTerm: + dicTerm = dicTerm.replace("\n", "").replace('(', r'\(').replace(')', r'\)').replace('/', r'\/') else: - dicTerm = r"\b" + dicTerm.replace("\n", "").replace('(', r'\(').replace(')', r'\)') + r"\b" + dicTerm = r"\b" + dicTerm.replace("\n", "") + r"\b" for catNum in catNums: cat = catNameNumberMap[catNum] diff --git a/src/team_comm_tools/utils/preprocess.py b/src/team_comm_tools/utils/preprocess.py index 400f2fd7..d0f74149 100644 --- a/src/team_comm_tools/utils/preprocess.py +++ b/src/team_comm_tools/utils/preprocess.py @@ -91,14 +91,31 @@ def preprocess_text(text): """Preprocess text by removing non-alphanumeric characters and converting to lowercase. This function takes a string, removes any characters that are not letters, numbers, or spaces, - and converts the remaining text to lowercase. + except certain emojis, and converts the remaining text to lowercase. :param text: The input text to process. :type text: str :return: The processed text containing only alphanumeric characters and spaces in lowercase. :rtype: str """ - return(re.sub(r"[^a-zA-Z0-9 ]+", '',text).lower()) + emojis_to_preserve = { + "(:", "(;", "):", "/:", ":(", ":)", ":/", ";)" + } + + emoji_placeholders = {} + # Replace each emoji with a unique placeholder + for i, emoji in enumerate(emojis_to_preserve): + placeholder = f"EMOJI_{i}" + emoji_placeholders[placeholder] = emoji + text = text.replace(emoji, placeholder) + + # Clean the text by removing unwanted characters, except placeholders + text = re.sub(r"[^a-zA-Z0-9 EMOJI_]+", '', text) + # Restore the preserved emojis by replacing placeholders back to original emojis + for placeholder, emoji in emoji_placeholders.items(): + text = text.replace(placeholder, emoji) + + return text.lower() def preprocess_naive_turns(chat_data, column_names): """Combine adjacent rows of the same speaker in the same conversation and compress messages into a "turn". From 8e138d8e95d7a26d2ddaa2b172d59ef6bb7945fb Mon Sep 17 00:00:00 2001 From: sundy1994 Date: Wed, 30 Oct 2024 15:48:43 -0700 Subject: [PATCH 7/7] use original message col in lexical_features() to improve readability --- src/team_comm_tools/features/lexical_features_v2.py | 10 +++++----- .../utils/calculate_chat_level_features.py | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/team_comm_tools/features/lexical_features_v2.py b/src/team_comm_tools/features/lexical_features_v2.py index 176eb306..94cdf490 100644 --- a/src/team_comm_tools/features/lexical_features_v2.py +++ b/src/team_comm_tools/features/lexical_features_v2.py @@ -26,7 +26,7 @@ def get_liwc_count(regex, chat): else: return 0 -def liwc_features(chat_df: pd.DataFrame, message_col: str, custom_liwc_dictionary: dict={}) -> pd.DataFrame: +def liwc_features(chat_df: pd.DataFrame, message_col_original: str, custom_liwc_dictionary: dict={}) -> pd.DataFrame: """ This function takes in the chat level input dataframe and computes lexical features (the number of words from a given lexicon, such as LIWC). @@ -48,13 +48,13 @@ def liwc_features(chat_df: pd.DataFrame, message_col: str, custom_liwc_dictionar lexicons_dict = pickle.load(lexicons_pickle_file) # Return the lexical features stacked as columns - df_lst = [pd.DataFrame(chat_df[message_col + "_original"].apply(lambda chat: get_liwc_count(regex, chat)))\ - .rename({message_col + "_original": lexicon_type + "_lexical_wordcount"}, axis=1)\ + df_lst = [pd.DataFrame(chat_df[message_col_original].apply(lambda chat: get_liwc_count(regex, chat)))\ + .rename({message_col_original: lexicon_type + "_lexical_wordcount"}, axis=1)\ for lexicon_type, regex in lexicons_dict.items()] if custom_liwc_dictionary: - df_lst += [pd.DataFrame(chat_df[message_col + "_original"].apply(lambda chat: get_liwc_count(regex, chat)))\ - .rename({message_col + "_original": lexicon_type + "_lexical_wordcount_custom"}, axis=1)\ + df_lst += [pd.DataFrame(chat_df[message_col_original].apply(lambda chat: get_liwc_count(regex, chat)))\ + .rename({message_col_original: lexicon_type + "_lexical_wordcount_custom"}, axis=1)\ for lexicon_type, regex in custom_liwc_dictionary.items()] return pd.concat(df_lst, axis=1) except FileNotFoundError: diff --git a/src/team_comm_tools/utils/calculate_chat_level_features.py b/src/team_comm_tools/utils/calculate_chat_level_features.py index fa1b88cf..61f60fef 100644 --- a/src/team_comm_tools/utils/calculate_chat_level_features.py +++ b/src/team_comm_tools/utils/calculate_chat_level_features.py @@ -198,7 +198,7 @@ def lexical_features(self) -> None: :return: None :rtype: None """ - self.chat_data = pd.concat([self.chat_data, liwc_features(self.chat_data, self.message_col, self.custom_liwc_dictionary)], axis = 1) + self.chat_data = pd.concat([self.chat_data, liwc_features(self.chat_data, self.message_col + "_original", self.custom_liwc_dictionary)], axis = 1) def calculate_hedge_features(self) -> None: """