I am absolutely new to AI/ML and need some guidance/direction.

Every “New to AI, try this” guide I find ends up going down a path that isn’t right for the project I’m working on - or convoluted with so many terms I need to look up, I get rather frustrated. Maybe I’m too old to learn/use AI? Anyway . . .

This is my project, and any guidance, pointers, help would be super appreciated. I’m working on a job aggregator. I have a simple web crawler that goes to a url, fetches the HTML, cleans a lot of the text and structure, and outputs the content of the job posting.

I then go in manually, look at that simplified HTML and extract the actual job description (vs Company description, benefits, other stuff on a job posting) to be used in another database. I use the exact wording, straight copy and paste, no summarization or interpretation.

I have about 400 data points in a database that look like this: job_site: “COMPANY_NAME”, raw_html: “<h1>Job Title</h1><p>This is what we do</p><p>We are looking for someone who</p>” job_description: “We are looking for someone who” That I’ve manually extracted. I feel like I can use that as training data to do some form of text . . . extraction ?? . . . from an html document. But I don’t have any clue on where to start

  • coolkicks@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Couple of options to start out with, Topic Labeling and Topic Extraction.

    • Topic Labeling is a classic example of supervised learning, or using ML with training data to classify new observations based on patterns found in training data.

    • Topic Extraction is a classic example of unsupervised learning, or attempting to identify patterns without training data.

    I’m going to start with labeling, or classification here. There are plenty of tools to train a model to classify text in to categories, I’d recommend starting with this scikit-learn tutorial to see what’s involved before you start.

    With any classification problem, you need good training data. You mentioned you’ve scraped 400 job postings, and I’m assuming you would want to using the job description to predict the job title. Some quick math, you’ll want to withhold 30% of your data to test your model, so that leaves 280 postings to train. I would recommend at least 100 descriptions per job title, so if you have 2-3 job titles, perfect, you’re ready to follow that tutorial with your own data!

    If you have more that that, you probably won’t be able to do labeling/classification here, and will instead want to do topic extraction, where you’ll throw your walls of text at the machine and let the machine tell you the patterns it finds.

    Topic modeling with spaCy and sci-kit learn is a great overview of this process, and plugging your own data in is pretty straightforward.

    Both of these examples don’t even really scratch the surface of what’s possible with text based ML these days, but are perfectly viable tools to run quickly and on commodity hardware.

    • Loopedcandle@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      Thanks for this! I’ll start learning!

      A friend mentioned I should start with a pre-trained model because 400 (and growing 50ish / week with my crawler) is just not nearly enough. Then do continued learning on that pre-trained model. Does that sound right?

      • coolkicks@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        Yeah, model training is hard. Like capital H HARD. you need a bunch of data and it needs to be high quality.

        New York is the financial center of USA, so separating finance jobs from job postings written by someone using New England vernacular is a step you need to go through to make sure your data is high enough quality.

        So if you are just starting, use 20 newsgroups dataset in those links, it’s pretty good data with a ton of resources written about it. It’s not fun data, but it isn’t as likely to fall victim to biases in data you aren’t expecting.