Repository: pykeen/pykeen
Issue: SLCWATrainingLoop misses 1 required positional argument: 'triples_factory'
Root cause: Documentation Deficiency

**Describe the bug**
I was following [this tutorial](https://pykeen.readthedocs.io/en/stable/tutorial/first_steps.html) and got the bug below. Am I missing anything? Thanks.

```
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-27-c625eb0d2877> in <module>
     14 # Pick a training approach (sLCWA or LCWA)
     15 from pykeen.training import SLCWATrainingLoop
---> 16 training_loop = SLCWATrainingLoop(model=model, optimizer=optimizer)
     17 
     18 # Train like Cristiano Ronaldo

TypeError: __init__() missing 1 required positional argument: 'triples_factory'
```

**To Reproduce**
```python
# Get a training dataset
from pykeen.datasets import Nations
dataset = Nations()
training_triples_factory = dataset.training

# Pick a model
from pykeen.models import TransE
model = TransE(triples_factory=training_triples_factory)

# Pick an optimizer from Torch
from torch.optim import Adam
optimizer = Adam(params=model.get_grad_params())

# Pick a training approach (sLCWA or LCWA)
from pykeen.training import SLCWATrainingLoop
training_loop = SLCWATrainingLoop(model=model, optimizer=optimizer)
```

**Environment:**
pykeen 1.5.0


Hi @weihua916 ,

it seems like me missed to update this tutorial after #405 / #406. This would be the updated example code:

```python
# %%
# Get a training dataset
from pykeen.datasets import Nations
dataset = Nations()
training_triples_factory = dataset.training

# Pick a model
from pykeen.models import TransE
model = TransE(triples_factory=training_triples_factory)

# Pick an optimizer from Torch
from torch.optim import Adam
optimizer = Adam(params=model.get_grad_params())

# Pick a training approach (sLCWA or LCWA)
from pykeen.training import SLCWATrainingLoop
training_loop = SLCWATrainingLoop(model=model, triples_factory=training_triples_factory, optimizer=optimizer)

# Train like Cristiano Ronaldo
training_loop.train(triples_factory=training_triples_factory, num_epochs=5, batch_size=256)

# Pick an evaluator
from pykeen.evaluation import RankBasedEvaluator
evaluator = RankBasedEvaluator()

# Get triples to test
mapped_triples = dataset.testing.mapped_triples

# Evaluate
results = evaluator.evaluate(model, mapped_triples, batch_size=1024)
print(results)
```

Before the PRs, we were accessing the training triples through the model, but changed this to the more explicit way shown above, partially in preparation for using HF Accelerate (cf. #393).

Got it, thank you!

Hi @weihua916, thanks again for pointing this out. I'll take the blame - I set up doctests so we could be a bit more lazy when it came to keeping the code in the tutorials up to date (assuming the tests would yell at us if they ever stopped working) but this relied on a faulty assumption that all of the doctests were running properly!

Anyway, @mberr made a nice fix to the tutorial in https://github.com/pykeen/pykeen/pull/497 and I assisted by fixing the doctests so this shouldn't happen again.