thesis

Text mining with Python

In my last post, I introduced the method I am employing for the qualitative discourse analysis of my interviews. Here, I want to introduce some of the tools I have used to build my script.

Reading multiple .txt files

All interview transcriptions were saved as .txt files and read into Python using the os and pandas packages. Saving the main directory (containing all interview files) address as a variable, I could easily extract all files from the directory with the correct format name like this:

import os
import pandas as pd

files = os.listdir('/MainDir/')

for file in files:
    if file.endswith(".txt"):
        pd.read_csv(file)

Removing punctuation and irrelevant breaks

To remove excess spacing and irrelevant punctuation, each interview content is converted into a giant string and I simply used the built in replace and strip functions. For some reason, I have to use an identical command with the re (regular expression) package (see #necessary below) – I cannot figure out why.. I also convert all text to lowercase.

import re

string = '' #make a giant string containing all words, each line begins with "P:"
    for line in df_interview:
        string += line[1:] + ' '
    
    #remove irrelevant punctuation
    string = string.replace(',','')
    string = string.replace('.','')
    string = string.replace('?','')
    string = string.replace('!','')
    string = string.replace(' +','')
    string = re.sub(' +',' ',string) #necessary
    string = string.strip()
    string = string.lower()

Identifying joining/stop words

Joining or stop words are irrelevant words for the analysis. It could be words like “it”, “the”, “and”, “so”, and so on.. These words are often used excessively without being especially informative for the analysis. In order to not skew the resulting graphs to center around irrelevant key words, I build a function to either take a list of stop words or, if no such list is provided, create a list on its own simply based on a specified number of most common words using the Counter function from the collections package. For single interviews, the function automatically generates a list of 50 stopwords based on frequency, if no list is provided.

nJW = 50 #set number when calling function
stringlist = string.split(' ') #split string at every space
    
    #Simply take the first 100 most common words as joiningwords
    if JoiningWords is None:
        JoiningWords = [row[0] for row in Counter(stringlist).most_common(nJW)]

Creating the edge lists

The edge list of a directed network can simply be made by creating a data frame with two columns. Each row describes that the word in column 1 points to the word in column 2, like this:

Word 1Word 2
Word 2Word 3
Word 3Word 4..

To make this list, I converted the stringlist variable to a dataframe format and removed all rows containing stop words. I then copied the first column by concatenating the same data frame and shifted all words in column 2 with -1 (that is, 1 row upwards). The last row will contain a nan value in the last cell of column 2, and therefore it is deleted.

#make dataframe of all the words
    DataFrameWords = pd.DataFrame(stringlist)
    
    for i in range(len(JoiningWords)): #remove joining words
        DataFrameWords = DataFrameWords[DataFrameWords[0] != JoiningWords[i] ]

    DataFrameWords = DataFrameWords.reset_index(drop=True) #reset index, otherwise numbering is f-ed
    
    #Making list of edges
    edgelist = pd.concat([DataFrameWords, DataFrameWords],axis=1, ignore_index = True) #have two columns of all words
    edgelist[1] = edgelist[1].shift(-1) #shift second column -1
    edgelist = edgelist[:-1] #delete last row

Saving to R-readable format

Using the feather package, I can save the edgelist data frame and import it directly to R, like this (I make sure to create an edgelist directory at the beginning of the script, and the function names each file in a date format based on the original file names):

import os
import feather

try:
    os.mkdir('EdgeLists')
except FileExistsError:
    None

#save edgelist
    path = 'EdgeLists/' + name + 'EdgeList.feather'
    feather.write_dataframe(edgelist, path)
    #df = feather.read_dataframe(path)

This can then be read into R using the following script. Note that:

  • the names substraction are of course based on a date format which I have originally named my files after.
  • I assign each edgelist to a variable named after the date format
  • There is a DrawNetwork function based on the method in Bruun et al (2018).
library(feather)
MainDir <- "~/Path/"
setwd(MainDir)
Get edgelists from a folder called "Edgelists" and substract file names w/o extension
file_list <-list.files(file.path(MainDir, "Edgelists"), pattern="*.feather")
names <- substr(file_list, 1,12)
id=1
for (i in names){
file = paste0(file.path(MainDir, 'Edgelists/'), file_list[id])
assign(i, read_feather(file)) #assign each edgelist to variable
DrawNetwork(read_feather(file), i)
id = id + 1
}

57 Comments

  • quetiapine without a prescription

    I’m commenting to let you be aware of of the amazing discovery my child developed browsing the blog. She came to find a good number of details, including how it is like to have a great coaching character to get a number of people clearly completely grasp a number of advanced issues. You actually did more than her desires. I appreciate you for churning out such beneficial, dependable, edifying and cool guidance on that topic to Emily.

  • superbeets

    I was curious if you ever thought of changing the layout of your website? Its very well written; I love what youve got to say. But maybe you could a little more in the way of content so people could connect with it better. Youve got an awful lot of text for only having 1 or 2 pictures. Maybe you could space it out better?|

  • balenciaga sneakers

    I and also my guys happened to be viewing the good guidelines from your web blog and before long came up with a terrible feeling I had not thanked the web site owner for those techniques. The young men came so joyful to study them and have in effect in truth been taking advantage of those things. Many thanks for being simply kind and for obtaining such high-quality useful guides most people are really desirous to be aware of. My very own honest regret for not expressing appreciation to you sooner.

  • nike sb

    I enjoy you because of all your labor on this web page. Kim takes pleasure in getting into investigations and it is easy to see why. We all learn all concerning the powerful mode you offer advantageous tips and tricks via this website and even inspire contribution from other individuals on the subject matter then our princess is certainly becoming educated so much. Take pleasure in the remaining portion of the new year. You’re carrying out a splendid job.

  • yeezy boost 350 v2

    My spouse and i were contented that Peter managed to round up his homework through the precious recommendations he acquired from your very own site. It’s not at all simplistic just to choose to be releasing things which often many people might have been making money from. And we all take into account we now have the writer to give thanks to for that. Those illustrations you have made, the straightforward blog menu, the relationships your site help promote – it is everything incredible, and it’s really assisting our son in addition to the family imagine that that idea is pleasurable, and that is unbelievably mandatory. Thank you for the whole thing!

  • bape

    I simply wished to say thanks once more. I’m not certain the things that I might have created without those tactics documented by you relating to that problem. It had been a terrifying setting in my position, but taking note of a new specialized mode you processed it took me to jump with happiness. Extremely happier for the service and then sincerely hope you really know what a great job you have been doing training the others with the aid of your site. I am certain you’ve never got to know all of us.

  • yeezy shoes

    I have to voice my passion for your kind-heartedness supporting all those that require guidance on in this issue. Your special commitment to passing the message across had been extremely insightful and has surely allowed employees just like me to attain their aims. Your own insightful publication means a whole lot a person like me and additionally to my office workers. Many thanks; from everyone of us.

  • yeezy boost 350 v2

    My spouse and i ended up being quite lucky when Chris managed to do his survey from the ideas he gained while using the weblog. It is now and again perplexing just to happen to be freely giving secrets which many others have been selling. And we already know we have got the website owner to thank for that. Those illustrations you’ve made, the straightforward web site navigation, the relationships you help engender – it’s got most wonderful, and it’s really aiding our son and our family reason why this subject is excellent, which is especially mandatory. Many thanks for the whole thing!

  • cheap flights

    Hello, i think that i saw you visited my weblog thus i came to “return the favor”.I’m
    attempting to find things to improve my site!I suppose its ok to
    use a few of your ideas!!

  • tek part

    You made some good points there. I checked on the internet for more information about the issue and found most individuals will go along with your views on this site. Carlin Malachi Weil

  • watch

    An intriguing conversation deserves comment. I believe that you should create extra on this subject, it may not be a frowned on subject yet generally people are not nearly enough to talk on such subjects. To the next. Thanks Adele Tammy Garcia

  • cheap flights

    you’re in reality a good webmaster. The website loading pace
    is incredible. It kind of feels that you’re doing any distinctive
    trick. Also, The contents are masterwork. you have done a magnificent task in this matter!

  • netflix

    A person necessarily help to make significantly posts I might state. That is the first time I frequented your web page and to this point? I amazed with the research you made to make this particular submit amazing. Fantastic activity!| Ophelia Zolly Flinn

  • tinyurl.com

    My brother suggested I might like this blog.
    He used to be totally right. This post truly made my day.
    You cann’t believe simply how so much time I had spent for this info!
    Thanks!

  • tinyurl.com

    Have you ever considered about adding a little bit more than just your articles?

    I mean, what you say is valuable and all. But think about if you added some great pictures or video clips to give your
    posts more, “pop”! Your content is excellent but with pics and videos, this website could
    undeniably be one of the greatest in its field. Wonderful
    blog!

  • https://www.megatakip.com

    ucuz takipçi avantajları oldukça fazladır.
    Öncelikle takipçi satın almanın ardından profildeki,
    paylaşımların az beğeni alması durumu gerçekçi bir imaj yaratmamaktadır.

    Bu bağlamda daha doğal bir görüntü yaratmak isteyen kişilerin beğeni düzeylerine de dikkat ettiği görülmektedir.

    Takipçi sayısıyla birlikte beğenilerin de belli seviyede yüksek olması gerçekçiliği arttırmaktadır.

    .

  • retinol serum

    I do agree with all the ideas you’ve introduced on your post.
    They are very convincing and will certainly work. Still, the posts are too brief for newbies.

    May you please extend them a bit from subsequent time? Thanks for the
    post.

  • türk takipçi

    You actually make it seem so easy with your presentation but I find this matter to be
    really something which I think I would never understand.
    It seems too complex and extremely broad for me.
    I am looking forward for your next post, I will try to
    get the hang of it!

  • leke kremi satın al

    Hi there, I found your web site by the use of Google while searching for a related subject, your website
    came up, it seems great. I have bookmarked it in my google bookmarks.

    Hi there, simply turned into aware of your blog through Google, and located that it’s truly informative.
    I’m going to watch out for brussels. I will appreciate when you continue this
    in future. Numerous people can be benefited
    out of your writing. Cheers!

  • Rebekah

    Nadie llevo mucho período usando Internet, probablemente sea porque no sabía lo
    suficiente.

    Pero tengo que reconocer que páginas web como mi me hace notar muy bien. Esta nombre es %nombre_simple_masculino.dat% Y soy
    un pequeño pueblo de %provincias_espana.dat%, comparto montones de gustos
    y aficiones con el resto de la multitud de este blog. Lo único que puedo decir es en hora generosa
    por la pensamiento y el diseño que le habéis dado a mi página.
    Llevo bastante tiempo buscando escrutinio parecida y no he
    dado con ella.

    A fin de que seré un usuario frecuente de la web.

    Muchas gracias por todo y deseo poder colaborar más adelante.

  • Teri

    Nadie llevo mucho período usando Internet, probablemente sea porque no sabía lo adecuado.

    Pero tengo que reconocer que páginas web como mi me hace
    sentir muy bien. Mi nombre es %nombre_simple_masculino.dat% Y soy un pequeño pueblo de %provincias_espana.dat%, comparto montones de gustos
    y entretenimientos con el resto de la gentío de este blog.
    Lo único que puedo decir es en hora benigna por la calidad y el diseño que le habéis dado a esta página.
    Llevo bastante tiempo buscando escrutinio parecida y no he dado con ella.

    A fin de que seré un usuario frecuente de la web.

    Muchas gracias lucro todo y espero poder colaborar en las siguientes lineas.

  • Ashley

    Nadie llevo mucho tiempo usando Internet, quizá sea
    porque no sabía lo competente.

    Pero tengo que reconocer que páginas web como mi me hace sospechar muy bien. Esta nombre es %nombre_simple_masculino.dat% Y soy un pequeño pueblo de %provincias_espana.dat%,
    comparto muchos gustos y aficiones con el resto de la
    gentío de este blog. Lo único que puedo decir es en hora benigna por
    la opinión y el diseño que le habéis dado a mi página.
    Llevo mucho tiempo buscando averiguamiento parecida y no he dado
    con ella.

    Así que seré un usuario habitual de la web.

    Muchas gracias por todo y deseo poder colaborar más adelante.

  • kremler ve sampuanlar

    I’ve been browsing online more than 2 hours today, yet I never found any interesting article like yours.
    It’s pretty worth enough for me. Personally, if all website owners and bloggers made
    good content as you did, the internet will be a lot more
    useful than ever before.

  • Octavio

    Embargo llevo mucho periodo usando Internet, quizá sea porque
    no sabía lo suficiente.

    Pero tengo que reconocer que páginas web como esta me hace
    sentir muy bien. Mi nombre es %nombre_simple_masculino.dat% Y
    soy un pequeño pueblo de %provincias_espana.dat%, comparto muchos gustos y distracciones con el resto de la gente de este blog.
    Lo único que puedo decir está en hora generosa por la opinión y el diseño que
    le habéis dado a mi página. Llevo mucho tiempo buscando escrutinio parecida y no he dado con ella.

    Así que seré un usuario habitual de la web.

    Muchas gracias lucro todo y deseo poder colaborar en las
    siguientes lineas.

  • Beulah

    No llevo mucho tiempo usando Internet, quizá
    sea porque no sabía lo adecuado.

    Pero tengo que reconocer que páginas web como mi
    me hace sentir muy bien. Esta nombre es %nombre_simple_masculino.dat% Y soy un pequeño pueblo de %provincias_espana.dat%, comparto muchos gustos y distracciones con el resto de la multitud de este blog.
    Lo único que puedo decir está en hora generosa por la opinión y el diseño que le habéis dado a esta página.
    Llevo altamente tiempo buscando escrutinio parecida y no he dado con ella.

    Así que seré un usuario frecuente de la web.

    Muchas gracias por todo y espero poder colaborar en las siguientes lineas.

  • Hortense

    Embargo llevo mucho período usando Internet, probablemente sea porque no sabía lo
    adecuado.

    Pero tengo que reconocer que páginas web como mi me hace sentir muy bien. Esta nombre es
    %nombre_simple_masculino.dat% Y soy un pequeño pueblo
    de %provincias_espana.dat%, comparto muchos gustos y
    aficiones con el resto de la gente de este blog. Lo único que puedo decir
    existe en hora generosa por la pensamiento y el diseño que
    le habéis dado a esta página. Llevo altamente tiempo buscando averiguamiento parecida y no he dado con ella.

    A fin de que seré un usuario usual de la web.

    Muchas gracias lucro todo y deseo poder colaborar en las siguientes lineas.

  • Mammie

    Embargo llevo mucho periodo usando Internet, probablemente sea porque no sabía lo adecuado.

    Pero tengo que reconocer que páginas web como esta me hace
    notar muy bien. Esta nombre es %nombre_simple_masculino.dat%
    Y soy un pequeño pueblo de %provincias_espana.dat%, comparto muchos gustos
    y entretenimientos con el resto de la multitud de este
    blog. Lo único que puedo decir es en hora generosa por la opinión y el diseño que le habéis dado a esta página.
    Llevo mucho tiempo buscando escrutinio parecida
    y no he dado con ella.

    A fin de que seré un usuario usual de la web.

    Muchas gracias lucro todo y espero poder colaborar en mi aporte.

  • Cassie

    Nadie llevo mucho tiempo usando Internet, probablemente sea porque no sabía
    lo competente.

    Pero tengo que reconocer que páginas web como esta me hace notar muy bien. Mi nombre es %nombre_simple_masculino.dat% Y soy
    un pequeño pueblo de %provincias_espana.dat%, comparto numerosos gustos y distracciones con el resto de
    la gentío de este blog. Lo único que puedo decir está en hora
    generosa por la pensamiento y el diseño que le habéis dado a mi página.
    Llevo mucho tiempo buscando información parecida y no he dado
    con ella.

    Así que seré un usuario frecuente de la web.

    Muchas gracias por todo y espero poder colaborar en mi
    aporte.

  • Jamey

    Embargo llevo mucho periodo usando Internet, probablemente sea porque no sabía lo adecuado.

    Pero tengo que reconocer que páginas web como esta me hace
    sentir muy bien. Mi nombre es %nombre_simple_masculino.dat% Y
    soy un pequeño pueblo de %provincias_espana.dat%, comparto montones de gustos y entretenimientos con el
    resto de la gentío de este blog. Lo único que puedo decir está en hora generosa por la pensamiento y
    el diseño que le habéis dado a mi página. Llevo altamente tiempo buscando averiguamiento parecida y no he dado con ella.

    Así que seré un usuario habitual de la web.

    Muchas gracias lucro todo y espero poder colaborar más adelante.

  • Hilton

    Nadie llevo mucho tiempo usando Internet, probablemente sea porque
    no sabía lo suficiente.

    Pero tengo que reconocer que páginas web como esta me
    hace sentir muy bien. Mi nombre es %nombre_simple_masculino.dat% Y soy un pequeño pueblo de %provincias_espana.dat%, comparto numerosos gustos y entretenimientos con el resto de la gentío de este blog.
    Lo único que puedo decir existe en hora generosa
    por la opinión y el diseño que le habéis dado a esta página.
    Llevo altamente tiempo buscando averiguamiento parecida y no he
    dado con ella.

    Así que seré un usuario usual de la web.

    Muchas gracias por todo y espero poder colaborar en mi aporte.

  • Junior

    No llevo mucho tiempo usando Internet, quizá sea porque no sabía lo competente.

    Pero tengo que reconocer que páginas web como esta me hace sentir muy bien. Esta nombre es %nombre_simple_masculino.dat% Y soy un pequeño pueblo de %provincias_espana.dat%, comparto montones de gustos
    y entretenimientos con el resto de la gentío de
    este blog. Lo único que puedo decir existe en hora buena por la opinión y el diseño que le habéis dado a mi página.
    Llevo bastante tiempo buscando averiguamiento parecida y no he dado con ella.

    A fin de que seré un usuario habitual de la web.

    Muchas gracias lucro todo y deseo poder colaborar
    en las siguientes lineas.

  • Michaela

    Embargo llevo mucho período usando Internet, probablemente sea porque no sabía lo competente.

    Pero tengo que reconocer que páginas web como mi me hace notar muy bien. Esta nombre es %nombre_simple_masculino.dat%
    Y soy un pequeño pueblo de %provincias_espana.dat%, comparto numerosos gustos
    y aficiones con el resto de la multitud de este blog. Lo único que puedo decir es en hora generosa por la opinión y el diseño que le habéis dado a esta página.
    Llevo bastante tiempo buscando escrutinio parecida y no he dado con ella.

    Así que seré un usuario habitual de la web.

    Muchas gracias por todo y deseo poder colaborar en mi aporte.

  • Cathy

    Embargo llevo mucho tiempo usando Internet, quizá sea porque no sabía
    lo competente.

    Pero tengo que reconocer que páginas web como mi me hace
    sospechar muy bien. Mi nombre es %nombre_simple_masculino.dat% Y soy un pequeño pueblo
    de %provincias_espana.dat%, comparto numerosos gustos y entretenimientos con el resto de la multitud de este blog.

    Lo único que puedo decir existe en hora generosa por la opinión y
    el diseño que le habéis dado a esta página.
    Llevo altamente tiempo buscando averiguamiento parecida y no he dado con ella.

    A fin de que seré un usuario frecuente de la web.

    Muchas gracias lucro todo y espero poder colaborar más adelante.

  • Abraham

    Embargo llevo mucho periodo usando Internet, probablemente sea porque no sabía lo suficiente.

    Pero tengo que reconocer que páginas web como
    mi me hace notar muy bien. Esta nombre es %nombre_simple_masculino.dat% Y soy un pequeño pueblo de %provincias_espana.dat%, comparto numerosos gustos y
    distracciones con el resto de la gente de este blog.
    Lo único que puedo decir existe en hora buena por la pensamiento y el
    diseño que le habéis dado a esta página.

    Llevo altamente tiempo buscando averiguamiento parecida y no he dado con ella.

    A fin de que seré un usuario usual de la web.

    Muchas gracias lucro todo y espero poder colaborar en mi aporte.

  • moisturize your skin

    Greetings from Ohio! I’m bored to death at work so I decided to browse your site on my iphone during lunch break.
    I love the knowledge you present here and can’t wait
    to take a look when I get home. I’m shocked at how fast moisturize your skin blog loaded on my cell phone ..
    I’m not even using WIFI, just 3G .. Anyways, great site!

  • leke kremi

    When I originally commented I seem to have clicked on the -Notify me when new
    comments are added- checkbox and from now on whenever a comment is added I get four emails with the exact same
    comment. Perhaps there is an easy method you can remove me from
    that service? Thanks a lot!

  • yeezy 700

    I have to express some thanks to you just for rescuing me from such a setting. Just after browsing through the search engines and seeing views that were not pleasant, I figured my life was over. Living minus the approaches to the difficulties you’ve resolved by means of your entire article content is a critical case, as well as the ones that might have badly affected my entire career if I had not discovered the blog. The competence and kindness in controlling all things was crucial. I don’t know what I would’ve done if I had not discovered such a solution like this. It’s possible to at this point look forward to my future. Thanks very much for this specialized and amazing guide. I will not be reluctant to propose your web page to anyone who wants and needs guidelines on this topic.

  • kyrie 6

    I simply needed to thank you very much once again. I’m not certain what I would have implemented in the absence of these suggestions shared by you directly on such problem. It was an absolute scary circumstance for me personally, nevertheless understanding a new specialised technique you handled it made me to jump over gladness. Now i am grateful for the help and in addition wish you are aware of an amazing job you happen to be getting into educating many others by way of your web site. Most likely you have never encountered all of us.

Leave a Reply

Your email address will not be published. Required fields are marked *